Loading lib_dec/ivas_svd_dec_fx.c +60 −1 Original line number Diff line number Diff line Loading @@ -923,6 +923,11 @@ static void biDiagonalReductionLeft_fx( Word32 L_temp; Word16 L_temp_e; Word64 norm_64,r_64; Word32 eins,zwei; Word16 eins_e,zwei_e; Word16 exponent0; g = 0; move32(); Loading @@ -940,6 +945,33 @@ static void biDiagonalReductionLeft_fx( FOR( jCh = currChannel; jCh < nChannelsL; jCh++ ) /* nChannelsL */ { norm_x = BASOP_Util_Add_Mant32Exp( norm_x, norm_x_e, Mpy_32_32( singularVectors[jCh][currChannel], singularVectors[jCh][currChannel] ), shl( singularVectors2_e[jCh][currChannel], 1 ), &norm_x_e ); /* exp(norm_x_e) */ eins=norm_x; eins_e=norm_x_e; } if (currChannel==0) { Word16 tmpe; printf("\nNORM64:"); exponent0=singularVectors2_e[0][0]; norm_64 =0; move64(); FOR( jCh = currChannel; jCh < nChannelsL; jCh++ ) /* nChannelsL */ { Word32 tmp; tmp=L_shr(singularVectors[jCh][currChannel],1); norm_64 = W_add(norm_64, W_mult0_32_32(tmp,tmp )); printf("%016llx ",norm_64); } tmpe=W_norm(norm_64); norm_x = W_extract_h(W_shl(norm_64, tmpe )); norm_x_e = add(sub(shl(exponent0, 1), tmpe), 3 ); zwei=norm_x; zwei_e=norm_x_e; printf("[%08X<%2X %08X<%2X]",eins,eins_e,zwei,zwei_e); if (eins==zwei) printf(" okay "); else printf(" "); if (eins_e==zwei_e) printf(" okay "); else printf(" FAIL "); printf("\n"); } IF( norm_x ) /*(fabsf(*sig_x) > EPSILON * fabsf(*sig_x)) { */ Loading @@ -961,6 +993,34 @@ static void biDiagonalReductionLeft_fx( move16(); r = BASOP_Util_Add_Mant32Exp( Mpy_32_32( ( g ), singularVectors[currChannel][currChannel] ), add( singularVectors2_e[currChannel][currChannel], g_e), -norm_x, norm_x_e, &r_e ); /* exp(r_e) */ eins=r; eins_e=r_e; if (currChannel==0) { Word16 tmpe,tmpe2; Word64 tmpmul; printf("R64:"); tmpe=sub(g_e,exponent0)-2; tmpmul=W_mult0_32_32(g,singularVectors[currChannel][currChannel]); tmpmul=W_shl(tmpmul,tmpe); r_64=W_sub(tmpmul, norm_64); tmpe2=W_norm(r_64); r=W_extract_h(W_shl(r_64,tmpe2)); r_e=1+exponent0+g_e-tmpe-tmpe2; zwei=r; zwei_e=r_e; printf("[%08X<%2X %08X<%2X]",eins,eins_e,zwei,zwei_e); if (eins==zwei) printf(" okay "); else printf(" "); if (eins_e==zwei_e) printf(" okay "); else printf(" FAIL "); printf("\n"); // r=eins; // r_e=eins_e; } singularVectors[currChannel][currChannel] = BASOP_Util_Add_Mant32Exp( singularVectors[currChannel][currChannel], singularVectors2_e[currChannel][currChannel], -g, g_e, &singularVectors2_e[currChannel][currChannel] ); /* sing_exp */ move32(); Loading Loading @@ -989,7 +1049,6 @@ static void biDiagonalReductionLeft_fx( } } } // rescaling block singularValues[currChannel] = g; move32(); Loading Loading
lib_dec/ivas_svd_dec_fx.c +60 −1 Original line number Diff line number Diff line Loading @@ -923,6 +923,11 @@ static void biDiagonalReductionLeft_fx( Word32 L_temp; Word16 L_temp_e; Word64 norm_64,r_64; Word32 eins,zwei; Word16 eins_e,zwei_e; Word16 exponent0; g = 0; move32(); Loading @@ -940,6 +945,33 @@ static void biDiagonalReductionLeft_fx( FOR( jCh = currChannel; jCh < nChannelsL; jCh++ ) /* nChannelsL */ { norm_x = BASOP_Util_Add_Mant32Exp( norm_x, norm_x_e, Mpy_32_32( singularVectors[jCh][currChannel], singularVectors[jCh][currChannel] ), shl( singularVectors2_e[jCh][currChannel], 1 ), &norm_x_e ); /* exp(norm_x_e) */ eins=norm_x; eins_e=norm_x_e; } if (currChannel==0) { Word16 tmpe; printf("\nNORM64:"); exponent0=singularVectors2_e[0][0]; norm_64 =0; move64(); FOR( jCh = currChannel; jCh < nChannelsL; jCh++ ) /* nChannelsL */ { Word32 tmp; tmp=L_shr(singularVectors[jCh][currChannel],1); norm_64 = W_add(norm_64, W_mult0_32_32(tmp,tmp )); printf("%016llx ",norm_64); } tmpe=W_norm(norm_64); norm_x = W_extract_h(W_shl(norm_64, tmpe )); norm_x_e = add(sub(shl(exponent0, 1), tmpe), 3 ); zwei=norm_x; zwei_e=norm_x_e; printf("[%08X<%2X %08X<%2X]",eins,eins_e,zwei,zwei_e); if (eins==zwei) printf(" okay "); else printf(" "); if (eins_e==zwei_e) printf(" okay "); else printf(" FAIL "); printf("\n"); } IF( norm_x ) /*(fabsf(*sig_x) > EPSILON * fabsf(*sig_x)) { */ Loading @@ -961,6 +993,34 @@ static void biDiagonalReductionLeft_fx( move16(); r = BASOP_Util_Add_Mant32Exp( Mpy_32_32( ( g ), singularVectors[currChannel][currChannel] ), add( singularVectors2_e[currChannel][currChannel], g_e), -norm_x, norm_x_e, &r_e ); /* exp(r_e) */ eins=r; eins_e=r_e; if (currChannel==0) { Word16 tmpe,tmpe2; Word64 tmpmul; printf("R64:"); tmpe=sub(g_e,exponent0)-2; tmpmul=W_mult0_32_32(g,singularVectors[currChannel][currChannel]); tmpmul=W_shl(tmpmul,tmpe); r_64=W_sub(tmpmul, norm_64); tmpe2=W_norm(r_64); r=W_extract_h(W_shl(r_64,tmpe2)); r_e=1+exponent0+g_e-tmpe-tmpe2; zwei=r; zwei_e=r_e; printf("[%08X<%2X %08X<%2X]",eins,eins_e,zwei,zwei_e); if (eins==zwei) printf(" okay "); else printf(" "); if (eins_e==zwei_e) printf(" okay "); else printf(" FAIL "); printf("\n"); // r=eins; // r_e=eins_e; } singularVectors[currChannel][currChannel] = BASOP_Util_Add_Mant32Exp( singularVectors[currChannel][currChannel], singularVectors2_e[currChannel][currChannel], -g, g_e, &singularVectors2_e[currChannel][currChannel] ); /* sing_exp */ move32(); Loading Loading @@ -989,7 +1049,6 @@ static void biDiagonalReductionLeft_fx( } } } // rescaling block singularValues[currChannel] = g; move32(); Loading