Commit fcdd5a13 authored by Ronald Wright's avatar Ronald Wright Committed by Jean-Baptiste Kempf

equalizer: Enforce type correctness for M_PI as well

It was my expectation that M_PI in the EqzCoeffs function is automatically cast
to a float during compile time, but my expectation turned out to be incorrect.
Specifically, I noticed in GCC's assembly output of equalizer.c that GCC was
doing the inverse by making the program convert all single-precision terms
(excluding 2.0f * M_PI) in the line containing M_PI to double-precision, and
then making it convert the double-precision result to single-precision before
the assignment to f_theta_1.  As a result, M_PI must be explicitly cast to a
float.
Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>
parent 3b1ecaf7
...@@ -254,7 +254,7 @@ static void EqzCoeffs( int i_rate, float f_octave_percent, ...@@ -254,7 +254,7 @@ static void EqzCoeffs( int i_rate, float f_octave_percent,
if( f_freq <= f_nyquist_freq ) if( f_freq <= f_nyquist_freq )
{ {
float f_theta_1 = ( 2.0f * M_PI * f_freq ) / f_rate; float f_theta_1 = ( 2.0f * (float) M_PI * f_freq ) / f_rate;
float f_theta_2 = f_theta_1 / f_octave_factor; float f_theta_2 = f_theta_1 / f_octave_factor;
float f_sin = sinf( f_theta_2 ); float f_sin = sinf( f_theta_2 );
float f_sin_prd = sinf( f_theta_2 * f_octave_factor_1 ) float f_sin_prd = sinf( f_theta_2 * f_octave_factor_1 )
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment