public double[][] fast_idct(double[][] input)
	  {
	    double output[][] = new double[8][8];
	    double temp[][] = new double[8][8];
	    double temp1;
	    int i, j, k;
	    for (i = 0; i < 8; i++)
	      {
	        for (j = 0; j < 8; j++)
	          {
	            temp[i][j] = 0.0;
	            for (k = 0; k < 8; k++)
	              {
	                temp[i][j] += input[i][k] * c[k][j];
	              }
	          }
	      }
	    for (i = 0; i < 8; i++)
	      {
	        for (j = 0; j < 8; j++)
	          {
	            temp1 = 0.0;
	            for (k = 0; k < 8; k++)
	              temp1 += cT[i][k] * temp[k][j];
	            temp1 += 128.0;
	            if (temp1 < 0)
	              output[i][j] = 0;
	            else if (temp1 > 255)
	              output[i][j] = 255;
	            else
	              output[i][j] = (int) Math.round(temp1);
	          }
	      }
	    return output;
	  }