code: public float[] toWraparoundOrder(float data[], int i0, int stride) {
      checkData(data,i0,stride);
      float newdata[] = new float[2*n];
      int nh = n/2;
      newdata[0]   = data[i0];
      newdata[1]   = 0.0f;
      newdata[n]   = data[i0+stride*nh];
      newdata[n+1] = 0.0f;
      for(int i=1; i<nh; i++){
        newdata[2*i]      = data[i0+stride*i];
        newdata[2*i+1]    = data[i0+stride*(n-i)];
        newdata[2*(n-i)]  = data[i0+stride*i];
        newdata[2*(n-i)+1]=-data[i0+stride*(n-i)]; }
      return newdata; }
docs: Return data in wraparound order.
  i0 and stride are used to traverse data; the new array is in
  packed (i0=0, stride=1) format.
  @see <a href="package-summary.html#wraparound">wraparound format</A>