Commit a9eb284c authored by Nicolas Roussin's avatar Nicolas Roussin
Browse files

Address Markus' comments.

parent 8d0b26d5
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -1041,7 +1041,6 @@ Word32 BASOP_Util_Divide3232_Scale_cadence( Word32 x, Word32 y, Word16 *s )
}
#endif

Word32 div_w_newton( Word32 num, Word32 den );
/*
Table of 256 precalculated estimates to be used by the "div_w_newton"
function using the Newton/Raphson method.
+2 −0
Original line number Diff line number Diff line
@@ -334,6 +334,8 @@ Word32 BASOP_Util_Divide3232_Scale_cadence( Word32 x, /*!< i : Numerator*/
                                            Word16 *s ); /*!< o  : Additional scalefactor difference*/
#endif

Word32 div_w_newton( Word32 num,   /*!< i  : Numerator*/
                     Word32 den ); /*!< i  : Denominator*/

Word32 BASOP_Util_Divide3232_Scale_newton( Word32 x,    /*!< i  : Numerator*/
                                           Word32 y,    /*!< i  : Denominator*/
+20 −4
Original line number Diff line number Diff line
@@ -3747,13 +3747,29 @@ static void eig2x2_fx(
    nval64m[1] = W_shl( nval64m[1], q_diff );
    nvalq[1] = add( q_min, q_diff );

    nvalm[0] = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, W_extract_h( nval64m[0] ), &exp );
    exp = sub( exp, sub( 62, nvalq[0] ) );
    // nvalm[0] = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, W_extract_h( nval64m[0] ), &exp );
    // exp = sub( exp, sub( 62, nvalq[0] ) );
    //
    // is equivalent to:
    //
    // nvalm[0] = div_w_newton( ONE_IN_Q30, W_extract_h( nval64m[0] ) );
    // exp = sub( nvalq[0], 61 );

    nvalm[0] = div_w_newton( ONE_IN_Q30, W_extract_h( nval64m[0] ) );
    exp = sub( nvalq[0], 61 );
    nvalm[0] = Sqrt32( nvalm[0], &exp );
    nvalq[0] = sub( 31, exp );

    nvalm[1] = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, W_extract_h( nval64m[1] ), &exp );
    exp = sub( exp, sub( 62, nvalq[1] ) );
    // nvalm[1] = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, W_extract_h( nval64m[1] ), &exp );
    // exp = sub( exp, sub( 62, nvalq[1] ) );
    //
    // is equivalent to:
    //
    // nvalm[1] = div_w_newton( ONE_IN_Q30, W_extract_h( nval64m[1] ) );
    // exp = sub( nvalq[1], 61 );

    nvalm[1] = div_w_newton( ONE_IN_Q30, W_extract_h( nval64m[1] ) );
    exp = sub( nvalq[1], 61 );
    nvalm[1] = Sqrt32( nvalm[1], &exp );
    nvalq[1] = sub( 31, exp );