protected void computeFloor(final float[] vector) {

      int n=vector.length;
      final int values=xList.length;
      final boolean[] step2Flags=new boolean[values];

      final int range=RANGES[multiplier-1];

      for(int i=2; i<values; i++) {
         final int lowNeighbourOffset=lowNeighbours[i];//Util.lowNeighbour(xList, i);
         final int highNeighbourOffset=highNeighbours[i];//Util.highNeighbour(xList, i);
         final int predicted=Util.renderPoint(
            xList[lowNeighbourOffset], xList[highNeighbourOffset],
            yList[lowNeighbourOffset], yList[highNeighbourOffset],
            xList[i]);
         final int val=yList[i];
         final int highRoom=range-predicted;
         final int lowRoom=predicted;
         final int room=highRoom<lowRoom?highRoom*2:lowRoom*2;
         if(val!=0) {
            step2Flags[lowNeighbourOffset]=true;
            step2Flags[highNeighbourOffset]=true;
            step2Flags[i]=true;
            if(val>=room) {
               yList[i]=highRoom>lowRoom?
                  val-lowRoom+predicted:
                  -val+highRoom+predicted-1;
            }
            else {
               yList[i]=(val&1)==1?
                  predicted-((val+1)>>1):
                  predicted+(val>>1);
            }
         }
         else {
            step2Flags[i]=false;
            yList[i]=predicted;
         }
      }

      final int[] xList2=new int[values];

      System.arraycopy(xList, 0, xList2, 0, values);
      sort(xList2, yList, step2Flags);

      int hx=0, hy=0, lx=0, ly=yList[0]*multiplier;

      float[] vector2=new float[vector.length];
      float[] vector3=new float[vector.length];
      Arrays.fill(vector2, 1.0f);
      System.arraycopy(vector, 0, vector3, 0, vector.length);

      for(int i=1; i<values; i++) {
         if(step2Flags[i]) {
            hy=yList[i]*multiplier;
            hx=xList2[i];
            Util.renderLine(lx, ly, hx, hy, vector);
            Util.renderLine(lx, ly, hx, hy, vector2);
            lx=hx;
            ly=hy;
         }
      }

      final float r=DB_STATIC_TABLE[hy];
      for(; hx<n/2; vector[hx++]=r);
   }