System.err.println("Got to ShortTermSynth Filter!");
    public void work()     {	for (short i = 0; i < mdrpin.length; i++)	{	    mdrpin[i] = input.popShort();	}	//truncate to only get mdrpin[120...159]	for (int i = 0; i < mdrp.length; i++)	{	    mdrp[i] = mdrpin[i + 120];	}	for (short i = 0; i < mLARc.length; i++)	{	    mLARc[i] = input.popShort();   //fix inputs!!	}			//Decoding of the coded Log-Area ratios:	for (short i = 0; i < 8; i++)	{	    short temp1 = Helper.shortify((Helper.gsm_add(mLARc[i], MIC[i])) << 10);	    short temp2 = Helper.shortify(B[i] << 10);	    temp1 = Helper.gsm_sub(temp1, temp2);	    temp1 = Helper.gsm_mult_r(INVA[i], temp1);	    mLARpp[i] = Helper.gsm_add(temp1, temp1);	}	    //Computation of the quantized reflection coefficients	//Interpolation of mLARpp to get mLARp:	for (short k = 0; k < 13; k++)	{	    for(short i = 0; i < 8; i++)	    {		mLARp[i] = Helper.gsm_add(Helper.shortify(mprevLARpp[i] >> 2), Helper.shortify(mLARpp[i] >> 2));		mLARp[i] = Helper.gsm_add(mLARp[i],  Helper.shortify(mprevLARpp[i] >> 1));	    }	}	for (short k = 13; k < 27; k++)	{	    for (short i = 0; i < 8; i++)	    {		mLARp[i] = Helper.gsm_add(Helper.shortify(mprevLARpp[i] >> 1), Helper.shortify(mLARpp[i] >> 1));	    }	}	for (short k = 27; k < 39; k++)        {	    for (short i = 0; i < 8; i++)	    {		mLARp[i] = Helper.gsm_add(Helper.shortify(mprevLARpp[i] >> 2), Helper.shortify(mLARpp[i] >> 2));		mLARp[i] = Helper.gsm_add(mLARp[i], Helper.shortify(mLARpp[i] >> 1));	    }	}	for (short k = 40; k < 160; k++)	{	    for (short i = 0; i < 8; i++)	    {		mLARp[i] = mLARpp[i];	    }	}	//set current LARpp to previous:	for (short j = 0; j < mprevLARpp.length; j++)	{	    mprevLARpp[j] = mLARpp[j];	}	//Compute mrrp[0..7] from mLARp[0...7]	for (short i = 0; i < 8; i++)	{	    short temp = Helper.gsm_abs(mLARp[i]);	    if (temp < 11059)	    {		temp = Helper.shortify(temp << 1);	    }	    else 	    {		if (temp < 20070)		{		    temp = Helper.gsm_add(temp, (short) 11059);		}		else		{		    temp = Helper.gsm_add((short) (temp >> 2), (short) 26112);		}	    }	    mrrp[i] = temp;	    if (mLARp[i] < 0)	    {		mrrp[i] = Helper.gsm_sub((short) 0, mrrp[i]);	    }	}	//Short term synthesis filtering:  uses drp[0..39] and rrp[0...7] 	// to produce sr[0...159].  A temporary array wt[0..159] is used.	for (short k = 0; k < 40; k++)	{	    wt[k] = mdrp[k];	}	for (short k = 0; k < 40; k++)	{	    wt[40+k] = mdrp[k];	}	for (short k = 0; k < 40; k++)	{	    wt[80+k] = mdrp[k];	}	for (short k = 0; k < 40; k++)	{	    wt[120+k] = mdrp[k];	}	//below is supposed to be from index_start to index_end...how is	//this different from just 0 to 159?	for (short k = 0; k < 13; k++)	{	    short sri = wt[k];	    for (short i = 1; i < 8; i++)	    {		sri = Helper.gsm_sub(sri, Helper.gsm_mult(mrrp[8-i], v[8-i]));		v[9-i] = Helper.gsm_add(v[8-i], Helper.gsm_mult_r(mrrp[8-i], sri));	    }	    sr[k] = sri;	    v[0] = sri;	}	for (short k = 13; k < 27; k++)	{	    short sri = wt[k];	    for (short i = 1; i < 8; i++)	    {		sri = Helper.gsm_sub(sri, Helper.gsm_mult(mrrp[8-i], v[8-i]));		v[9-i] = Helper.gsm_add(v[8-i], Helper.gsm_mult_r(mrrp[8-i], sri));	    }	    sr[k] = sri;	    v[0] = sri;	}	for (short k = 27; k < 40; k++)	{	    short sri = wt[k];	    for (short i = 1; i < 8; i++)	    {		sri = Helper.gsm_sub(sri, Helper.gsm_mult(mrrp[8-i], v[8-i]));		v[9-i] = Helper.gsm_add(v[8-i], Helper.gsm_mult_r(mrrp[8-i], sri));	    }	    sr[k] = sri;	    v[0] = sri;	}		for (short k = 40; k < 160; k++)	{	    short sri = wt[k];	    for (short i = 1; i < 8; i++)	    {		sri = Helper.gsm_sub(sri, Helper.gsm_mult(mrrp[8-i], v[8-i]));		v[9-i] = Helper.gsm_add(v[8-i], Helper.gsm_mult_r(mrrp[8-i], sri));	    }	    sr[k] = sri;	    v[0] = sri;	}	for (short j = 0; j < sr.length; j++)	{	    output.pushShort(sr[j]);	}	System.err.println("Got to ShortTermSynth Filter!");    }