Double precision arithmetic in Reverberator
There are used double precision mathematical functions ceil()
in ivas_binRenderer_convModuleOpen()
:
- \lib_dec\ivas_binRenderer_internal.c(187): hBinRenConvModule->numTapsArray[bandIdx] = (int16_t) ceil( 0.6f * hBinRenConvModule->numTaps );
- \lib_dec\ivas_binRenderer_internal.c(191): hBinRenConvModule->numTapsArray[bandIdx] = (int16_t) ceil( 0.5f * hBinRenConvModule->numTaps );
- \lib_dec\ivas_binRenderer_internal.c(195): hBinRenConvModule->numTapsArray[bandIdx] = (int16_t) ceil( 0.4f * hBinRenConvModule->numTaps );
- \lib_dec\ivas_binRenderer_internal.c(199): hBinRenConvModule->numTapsArray[bandIdx] = (int16_t) ceil( 0.3f * hBinRenConvModule->numTaps )
- \lib_rend\ivas_reverb.c(1203): transition_start = (int16_t) round( FFT_FILTER_WND_FLAT_REGION * fft_hist_size );
- \lib_rend\ivas_reverb.c(1204): transition_length = (int16_t) round( FFT_FILTER_WND_TRANS_REGION * fft_hist_size );
- \lib_rend\ivas_reverb_filter_design.c(590): idx_pivot = (int16_t) round( STEP_LIMIT_PIVOT_FREQ / freq_step );
Consider to use a single precision counterpart ceilf()
/ roundf()
or an integer operation.
Then:
- \lib_rend\ivas_reverb_filter_design.c(726): base_idx = (int16_t) floor( tbl_index ); -> floorf() or integer operation
Edited by vaclav