Loading lib_dec/ivas_svd_dec_fx.c +59 −11 Original line number Diff line number Diff line Loading @@ -926,8 +926,8 @@ static void biDiagonalReductionLeft_fx( L_temp = L_negate( L_temp ); } g = L_temp; g_e = L_temp_e; move32(); g_e = L_temp_e; move16(); r = BASOP_Util_Add_Mant32Exp( Mpy_32_32( ( g ), singularVectors[currChannel][idx] ), add( singularVectors2_e[currChannel][idx], g_e), -norm_x, norm_x_e, &r_e ); /* exp(r_e) */ Loading Loading @@ -967,6 +967,26 @@ static void biDiagonalReductionLeft_fx( move32(); singularValues_e[currChannel] = g_e; move16(); printf("\nsecDiag[%2d]: %08X<%2x singularvalues:%08X<%2x\n",currChannel,secDiag[currChannel],secDiag_e[currChannel],singularValues[currChannel],singularValues_e[currChannel]); } { int i,j; printf("\n\x1b[1;37;41mLEFT\x1b[0m\n"); for (i=0;i<MAX_OUTPUT_CHANNELS;i++) { for (j=0;j<MAX_OUTPUT_CHANNELS;j++) { printf("%08X<%2x ",singularVectors[i][j],singularVectors2_e[i][j]); } printf("\n"); } printf("\x1b[0m\n"); printf("\x1b[1;37;44m"); FOR( jCh = idx; jCh < nChannelsL; jCh++ ) /* nChannelsL */ { printf("%08X<%2x ",singularVectors[jCh][currChannel+1], singularVectors2_e[jCh][currChannel+1]); } printf("\n"); } return; Loading @@ -993,6 +1013,8 @@ static void biDiagonalReductionRight_fx( Word16 iCh, jCh, idx; Word32 norm_x, r; Word16 norm_x_e, r_e; Word32 abs_x; Word16 abs_x_e; Word32 L_temp; Word16 L_temp_e; Loading @@ -1008,9 +1030,14 @@ static void biDiagonalReductionRight_fx( move32(); norm_x_e = 0; move16(); abs_x = 0; move32(); abs_x_e = 0; move16(); FOR( jCh = idx; jCh < nChannelsC; jCh++ ) /*nChannelsC */ { norm_x = BASOP_Util_Add_Mant32Exp( norm_x, norm_x_e, Mpy_32_32( singularVectors[currChannel][jCh], singularVectors[currChannel][jCh] ), shl( singularVectors2_e[currChannel][jCh], 1 ), &norm_x_e ); /* exp(norm_x_e) */ abs_x = BASOP_Util_Add_Mant32Exp( abs_x, abs_x_e, L_abs( singularVectors[currChannel][jCh] ), singularVectors2_e[currChannel][jCh], &abs_x_e ); } IF( norm_x ) /*(fabsf(*sig_x) > EPSILON * fabsf(*sig_x)) { */ Loading Loading @@ -1043,24 +1070,32 @@ static void biDiagonalReductionRight_fx( move16(); r = BASOP_Util_Add_Mant32Exp( Mpy_32_32( ( *g ), singularVectors[currChannel][idx] ), singularVectors2_e[currChannel][idx], -norm_x, norm_x_e, &r_e ); /* exp(r_e) */ r = BASOP_Util_Add_Mant32Exp( Mpy_32_32( ( *g ), singularVectors[currChannel][idx] ), add( *g_e, singularVectors2_e[currChannel][idx] ), -norm_x, norm_x_e, &r_e ); /* exp(r_e) */ singularVectors[currChannel][idx] = BASOP_Util_Add_Mant32Exp( singularVectors[currChannel][idx], singularVectors2_e[currChannel][idx], -( *g ), ( *g_e ), &singularVectors2_e[currChannel][idx] ); /* exp(sing_exp) */ move32(); invVal_e = r_e; invVal_e = 0; move16(); invVal = BASOP_Util_Divide3232_Scale_newton( MAXVAL_WORD32, maxWithSign_fx( r ), &invVal_e ); invVal = BASOP_Util_Divide3232_Scale_newton( abs_x, maxWithSign_fx( r ), &invVal_e ); invVal_e = add( invVal_e, sub( abs_x_e, r_e ) ); printf("r:%08X<%2x:: ",r,r_e); printf("\x1b[1;37;43m secdiag: "); FOR( jCh = idx; jCh < nChannelsC; jCh++ ) /* nChannelsC */ { temp_e = norm_l( singularVectors[currChannel][jCh] ); secDiag[jCh] = Mpy_32_32( L_shl( singularVectors[currChannel][jCh], temp_e ), invVal ); /* exp(sing_exp + (singularVectors_e - sig_x_e) */ // temp_e = norm_l( singularVectors[currChannel][jCh] ); // secDiag[jCh] = Mpy_32_32( L_shl( singularVectors[currChannel][jCh], temp_e ), invVal ); /* exp(sing_exp + (singularVectors_e - sig_x_e) */ // move32(); // secDiag_exp[jCh] = add( sub( invVal_e, temp_e ), sub( singularVectors2_e[currChannel][jCh], r_e ) ); // move16(); secDiag[jCh] = Mpy_32_32( singularVectors[currChannel][jCh], invVal ); /* exp(sing_exp + (singularVectors_e - sig_x_e) */ move32(); secDiag_exp[jCh] = add( sub( invVal_e, temp_e ), sub( singularVectors2_e[currChannel][jCh], r_e ) ); secDiag_exp[jCh] = add( invVal_e, sub( singularVectors2_e[currChannel][jCh], r_e ) ); move16(); } printf("%08X<%2x ",secDiag[jCh],secDiag_exp[jCh]); } printf("\x1b[0m\n"); FOR( iCh = currChannel + 1; iCh < nChannelsL; iCh++ ) /* nChannelsL */ { norm_x = 0; Loading @@ -1071,7 +1106,8 @@ static void biDiagonalReductionRight_fx( { norm_x = BASOP_Util_Add_Mant32Exp( norm_x, norm_x_e, Mpy_32_32( singularVectors[iCh][jCh], singularVectors[currChannel][jCh] ), add( singularVectors2_e[iCh][jCh], singularVectors2_e[currChannel][jCh] ), &norm_x_e ); /* exp(norm_x_e) */ } norm_x = BASOP_Util_Divide3232_Scale_newton( norm_x, abs_x, &invVal_e ); norm_x_e = add( invVal_e, sub(norm_x_e, abs_x_e ) ); FOR( jCh = idx; jCh < nChannelsC; jCh++ ) /* nChannelsC */ { singularVectors[iCh][jCh] = BASOP_Util_Add_Mant32Exp( singularVectors[iCh][jCh], singularVectors2_e[iCh][jCh], Mpy_32_32( norm_x, secDiag[jCh] ), add( norm_x_e, secDiag_exp[jCh] ), &singularVectors2_e[iCh][jCh] ); /* exp(sing_exp2) */ Loading @@ -1081,7 +1117,19 @@ static void biDiagonalReductionRight_fx( } } { int i,j; printf("\n\x1b[1;37;42mRIGHT\x1b[0m\n"); for (i=0;i<MAX_OUTPUT_CHANNELS;i++) { for (j=0;j<MAX_OUTPUT_CHANNELS;j++) { printf("%08X<%2x ",singularVectors[i][j],singularVectors2_e[i][j]); } printf("\n"); } printf("\x1b[0m\n"); } return; } Loading Loading
lib_dec/ivas_svd_dec_fx.c +59 −11 Original line number Diff line number Diff line Loading @@ -926,8 +926,8 @@ static void biDiagonalReductionLeft_fx( L_temp = L_negate( L_temp ); } g = L_temp; g_e = L_temp_e; move32(); g_e = L_temp_e; move16(); r = BASOP_Util_Add_Mant32Exp( Mpy_32_32( ( g ), singularVectors[currChannel][idx] ), add( singularVectors2_e[currChannel][idx], g_e), -norm_x, norm_x_e, &r_e ); /* exp(r_e) */ Loading Loading @@ -967,6 +967,26 @@ static void biDiagonalReductionLeft_fx( move32(); singularValues_e[currChannel] = g_e; move16(); printf("\nsecDiag[%2d]: %08X<%2x singularvalues:%08X<%2x\n",currChannel,secDiag[currChannel],secDiag_e[currChannel],singularValues[currChannel],singularValues_e[currChannel]); } { int i,j; printf("\n\x1b[1;37;41mLEFT\x1b[0m\n"); for (i=0;i<MAX_OUTPUT_CHANNELS;i++) { for (j=0;j<MAX_OUTPUT_CHANNELS;j++) { printf("%08X<%2x ",singularVectors[i][j],singularVectors2_e[i][j]); } printf("\n"); } printf("\x1b[0m\n"); printf("\x1b[1;37;44m"); FOR( jCh = idx; jCh < nChannelsL; jCh++ ) /* nChannelsL */ { printf("%08X<%2x ",singularVectors[jCh][currChannel+1], singularVectors2_e[jCh][currChannel+1]); } printf("\n"); } return; Loading @@ -993,6 +1013,8 @@ static void biDiagonalReductionRight_fx( Word16 iCh, jCh, idx; Word32 norm_x, r; Word16 norm_x_e, r_e; Word32 abs_x; Word16 abs_x_e; Word32 L_temp; Word16 L_temp_e; Loading @@ -1008,9 +1030,14 @@ static void biDiagonalReductionRight_fx( move32(); norm_x_e = 0; move16(); abs_x = 0; move32(); abs_x_e = 0; move16(); FOR( jCh = idx; jCh < nChannelsC; jCh++ ) /*nChannelsC */ { norm_x = BASOP_Util_Add_Mant32Exp( norm_x, norm_x_e, Mpy_32_32( singularVectors[currChannel][jCh], singularVectors[currChannel][jCh] ), shl( singularVectors2_e[currChannel][jCh], 1 ), &norm_x_e ); /* exp(norm_x_e) */ abs_x = BASOP_Util_Add_Mant32Exp( abs_x, abs_x_e, L_abs( singularVectors[currChannel][jCh] ), singularVectors2_e[currChannel][jCh], &abs_x_e ); } IF( norm_x ) /*(fabsf(*sig_x) > EPSILON * fabsf(*sig_x)) { */ Loading Loading @@ -1043,24 +1070,32 @@ static void biDiagonalReductionRight_fx( move16(); r = BASOP_Util_Add_Mant32Exp( Mpy_32_32( ( *g ), singularVectors[currChannel][idx] ), singularVectors2_e[currChannel][idx], -norm_x, norm_x_e, &r_e ); /* exp(r_e) */ r = BASOP_Util_Add_Mant32Exp( Mpy_32_32( ( *g ), singularVectors[currChannel][idx] ), add( *g_e, singularVectors2_e[currChannel][idx] ), -norm_x, norm_x_e, &r_e ); /* exp(r_e) */ singularVectors[currChannel][idx] = BASOP_Util_Add_Mant32Exp( singularVectors[currChannel][idx], singularVectors2_e[currChannel][idx], -( *g ), ( *g_e ), &singularVectors2_e[currChannel][idx] ); /* exp(sing_exp) */ move32(); invVal_e = r_e; invVal_e = 0; move16(); invVal = BASOP_Util_Divide3232_Scale_newton( MAXVAL_WORD32, maxWithSign_fx( r ), &invVal_e ); invVal = BASOP_Util_Divide3232_Scale_newton( abs_x, maxWithSign_fx( r ), &invVal_e ); invVal_e = add( invVal_e, sub( abs_x_e, r_e ) ); printf("r:%08X<%2x:: ",r,r_e); printf("\x1b[1;37;43m secdiag: "); FOR( jCh = idx; jCh < nChannelsC; jCh++ ) /* nChannelsC */ { temp_e = norm_l( singularVectors[currChannel][jCh] ); secDiag[jCh] = Mpy_32_32( L_shl( singularVectors[currChannel][jCh], temp_e ), invVal ); /* exp(sing_exp + (singularVectors_e - sig_x_e) */ // temp_e = norm_l( singularVectors[currChannel][jCh] ); // secDiag[jCh] = Mpy_32_32( L_shl( singularVectors[currChannel][jCh], temp_e ), invVal ); /* exp(sing_exp + (singularVectors_e - sig_x_e) */ // move32(); // secDiag_exp[jCh] = add( sub( invVal_e, temp_e ), sub( singularVectors2_e[currChannel][jCh], r_e ) ); // move16(); secDiag[jCh] = Mpy_32_32( singularVectors[currChannel][jCh], invVal ); /* exp(sing_exp + (singularVectors_e - sig_x_e) */ move32(); secDiag_exp[jCh] = add( sub( invVal_e, temp_e ), sub( singularVectors2_e[currChannel][jCh], r_e ) ); secDiag_exp[jCh] = add( invVal_e, sub( singularVectors2_e[currChannel][jCh], r_e ) ); move16(); } printf("%08X<%2x ",secDiag[jCh],secDiag_exp[jCh]); } printf("\x1b[0m\n"); FOR( iCh = currChannel + 1; iCh < nChannelsL; iCh++ ) /* nChannelsL */ { norm_x = 0; Loading @@ -1071,7 +1106,8 @@ static void biDiagonalReductionRight_fx( { norm_x = BASOP_Util_Add_Mant32Exp( norm_x, norm_x_e, Mpy_32_32( singularVectors[iCh][jCh], singularVectors[currChannel][jCh] ), add( singularVectors2_e[iCh][jCh], singularVectors2_e[currChannel][jCh] ), &norm_x_e ); /* exp(norm_x_e) */ } norm_x = BASOP_Util_Divide3232_Scale_newton( norm_x, abs_x, &invVal_e ); norm_x_e = add( invVal_e, sub(norm_x_e, abs_x_e ) ); FOR( jCh = idx; jCh < nChannelsC; jCh++ ) /* nChannelsC */ { singularVectors[iCh][jCh] = BASOP_Util_Add_Mant32Exp( singularVectors[iCh][jCh], singularVectors2_e[iCh][jCh], Mpy_32_32( norm_x, secDiag[jCh] ), add( norm_x_e, secDiag_exp[jCh] ), &singularVectors2_e[iCh][jCh] ); /* exp(sing_exp2) */ Loading @@ -1081,7 +1117,19 @@ static void biDiagonalReductionRight_fx( } } { int i,j; printf("\n\x1b[1;37;42mRIGHT\x1b[0m\n"); for (i=0;i<MAX_OUTPUT_CHANNELS;i++) { for (j=0;j<MAX_OUTPUT_CHANNELS;j++) { printf("%08X<%2x ",singularVectors[i][j],singularVectors2_e[i][j]); } printf("\n"); } printf("\x1b[0m\n"); } return; } Loading