docs: void passf4(final int ido, final int l1, final double in[], final int in_off, final double out[], final int out_off, final int offset, final int isign) {
  		double ci2, ci3, ci4, cr2, cr3, cr4, ti1, ti2, ti3, ti4, tr1, tr2, tr3, tr4;
  		int iw1, iw2, iw3;
  		iw1 = offset;
  		iw2 = iw1 + ido;
  		iw3 = iw2 + ido;
  
  		int idx0 = l1 * ido;
  		if (ido == 2) {
  			for (int k = 0; k < l1; k++) {
  				int idxt1 = k * ido;
  				int iidx1 = in_off + 4 * idxt1 + 1;
  				int iidx2 = iidx1 + ido;
  				int iidx3 = iidx2 + ido;
  				int iidx4 = iidx3 + ido;
  
  				double i1i = in[iidx1 - 1];
  				double i1r = in[iidx1];
  				double i2i = in[iidx2 - 1];
  				double i2r = in[iidx2];
  				double i3i = in[iidx3 - 1];
  				double i3r = in[iidx3];
  				double i4i = in[iidx4 - 1];
  				double i4r = in[iidx4];
  
  				ti1 = i1r - i3r;
  				ti2 = i1r + i3r;
  				tr4 = i4r - i2r;
  				ti3 = i2r + i4r;
  				tr1 = i1i - i3i;
  				tr2 = i1i + i3i;
  				ti4 = i2i - i4i;
  				tr3 = i2i + i4i;
  
  				int oidx1 = out_off + idxt1;
  				int oidx2 = oidx1 + idx0;
  				int oidx3 = oidx2 + idx0;
  				int oidx4 = oidx3 + idx0;
  				out[oidx1] = tr2 + tr3;
  				out[oidx1 + 1] = ti2 + ti3;
  				out[oidx2] = tr1 + isign * tr4;
  				out[oidx2 + 1] = ti1 + isign * ti4;
  				out[oidx3] = tr2 - tr3;
  				out[oidx3 + 1] = ti2 - ti3;
  				out[oidx4] = tr1 - isign * tr4;
  				out[oidx4 + 1] = ti1 - isign * ti4;
  			}
  		} else {
  			for (int k = 0; k < l1; k++) {
  				int idx1 = k * ido;
  				int idx2 = in_off + 1 + 4 * idx1;
  				for (int i = 0; i < ido - 1; i += 2) {
  					int iidx1 = i + idx2;
  					int iidx2 = iidx1 + ido;
  					int iidx3 = iidx2 + ido;
  					int iidx4 = iidx3 + ido;
  					double i1i = in[iidx1 - 1];
  					double i1r = in[iidx1];
  					double i2i = in[iidx2 - 1];
  					double i2r = in[iidx2];
  					double i3i = in[iidx3 - 1];
  					double i3r = in[iidx3];
  					double i4i = in[iidx4 - 1];
  					double i4r = in[iidx4];
  
  					ti1 = i1r - i3r;
  					ti2 = i1r + i3r;
  					ti3 = i2r + i4r;
  					tr4 = i4r - i2r;
  					tr1 = i1i - i3i;
  					tr2 = i1i + i3i;
  					ti4 = i2i - i4i;
  					tr3 = i2i + i4i;
  					cr3 = tr2 - tr3;
  					ci3 = ti2 - ti3;
  					cr2 = tr1 + isign * tr4;
  					cr4 = tr1 - isign * tr4;
  					ci2 = ti1 + isign * ti4;
  					ci4 = ti1 - isign * ti4;
  
  					int widx1 = i + iw1;
  					int widx2 = i + iw2;
  					int widx3 = i + iw3;
  					double w1r = wtable[widx1];
  					double w1i = isign * wtable[widx1 + 1];
  					double w2r = wtable[widx2];
  					double w2i = isign * wtable[widx2 + 1];
  					double w3r = wtable[widx3];
  					double w3i = isign * wtable[widx3 + 1];
  
  					int oidx1 = out_off + i + idx1;
  					int oidx2 = oidx1 + idx0;
  					int oidx3 = oidx2 + idx0;
  					int oidx4 = oidx3 + idx0;
  					out[oidx1] = tr2 + tr3;
  					out[oidx1 + 1] = ti2 + ti3;
  					out[oidx2] = w1r * cr2 - w1i * ci2;
  					out[oidx2 + 1] = w1r * ci2 + w1i * cr2;
  					out[oidx3] = w2r * cr3 - w2i * ci3;
  					out[oidx3 + 1] = w2r * ci3 + w2i * cr3;
  					out[oidx4] = w3r * cr4 - w3i * ci4;
  					out[oidx4 + 1] = w3r * ci4 + w3i * cr4;
  				}
  			}
  		}
  	}