Commit 605c5f25 authored by Nishant S Kulgod's avatar Nishant S Kulgod
Browse files

exp correction

parent 90bc42f9
Loading
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1546,7 +1546,7 @@ Word16 computeMixingMatrices_fx(
    int16_t nL, nC;
    int16_t lengthCx = num_inputs;
    int16_t lengthCy = num_outputs;
    float svd_in_buffer[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS];
    //float svd_in_buffer[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS];
    float svd_u_buffer[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS];
    float svd_s_buffer[MAX_OUTPUT_CHANNELS];
    float svd_v_buffer[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS];
@@ -1955,10 +1955,10 @@ Word16 computeMixingMatrices_fx(
        mat2svdMat_fx( mat_mult_buffer1_fx, svd_in_buffer_fx, lengthCx, lengthCy, 0 );

#ifdef IVAS_FLOAT_FIXED_TO_BE_REMOVED
        FOR ( Word32 g = 0; g < lengthCx; g++ )
        /*FOR ( Word32 g = 0; g < lengthCx; g++ )
        {
            me2f_buf( ( svd_in_buffer_fx[g] ), mat_mult_buffer1_e, ( svd_in_buffer[g] ), lengthCy );
        }
        }*/

        nL = lengthCx;
        move16();
+9 −19
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@
#define SVD_MAX_NUM_ITERATION    75              /* maximum number of interations before exiting the SVD            */
#define SVD_ZERO_FLUSH_THRESHOLD 1.0e-20f

#define SVD_MINIMUM_VALUE_FX        ( 2 ) /* minimum value                                                   */
#define SVD_MINIMUM_VALUE_FX        ( 0 ) /* minimum value                                                   */

/*-----------------------------------------------------------------------*
 * Local function prototypes
@@ -777,13 +777,16 @@ static void biDiagonalReductionLeft_fx(
    Word16 *sig_x_e,
    Word32 *g ) // Q31
{
    int16_t iCh, jCh, idx;
    Word16 iCh, jCh, idx;
    Word32 norm_x, f, r;
    Word16 norm_x_e, f_e, r_e;
    Word16 sing_exp[MAX_OUTPUT_CHANNELS];
    Word16 sing_exp2[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS];
    Word16 sing_exp2[MAX_OUTPUT_CHANNELS][MAX_OUTPUT_CHANNELS] = { 0 };
    Word32 L_temp;
    Word16 L_temp_e;
    for (jCh = 0; jCh < MAX_OUTPUT_CHANNELS; jCh++) {
        set_s( sing_exp2[jCh], *singularVectors_e, MAX_OUTPUT_CHANNELS);
    }

    secDiag[currChannel] = Mpy_32_32( *sig_x, *g );
    if ( *sig_x_e > *secDiag_e )
@@ -865,30 +868,17 @@ static void biDiagonalReductionLeft_fx(
        }

        Word16 exp_max = *singularVectors_e;
        for ( iCh = currChannel; iCh < nChannelsC; iCh++ )
        for ( iCh = 0; iCh < nChannelsC; iCh++ )
        {
            for ( jCh = idx; jCh < nChannelsL; jCh++ )
            for ( jCh = 0; jCh < nChannelsL; jCh++ )
            {
                exp_max = s_max( exp_max, sing_exp2[jCh][iCh] );
            }
        }

        for ( iCh = 0; iCh < currChannel; iCh++ )
        for ( iCh = 0; iCh < nChannelsC; iCh++ )
        {
            for ( jCh = 0; jCh < nChannelsL; jCh++ )
            {
                singularVectors[jCh][iCh] = L_shr_r( singularVectors[jCh][iCh], sub( exp_max, *singularVectors_e ) );
            }
        }

        for ( iCh = currChannel; iCh < nChannelsC; iCh++ )
        {
            for ( jCh = 0; jCh < idx; jCh++ )
            {
                singularVectors[jCh][iCh] = L_shr_r( singularVectors[jCh][iCh], sub( exp_max, *singularVectors_e ) );
            }

            for ( jCh = idx; jCh < nChannelsL; jCh++ )
            {
                singularVectors[jCh][iCh] = L_shr_r( singularVectors[jCh][iCh], sub( exp_max, sing_exp2[jCh][iCh] ) );
            }