Commit b5f7c8f6 authored by thomas dettbarn's avatar thomas dettbarn
Browse files

two variables have been replaced with 64 bit. diff looks good.

parent 0ba7dcc0
Loading
Loading
Loading
Loading
+60 −1
Original line number Diff line number Diff line
@@ -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();
@@ -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)) { */
@@ -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();

@@ -989,7 +1049,6 @@ static void biDiagonalReductionLeft_fx(
                }
            }
        }

        // rescaling block
        singularValues[currChannel] = g;
        move32();