docs: public void realInverse(double[] a, int offa, boolean scale) {
  		if (n == 1)
  			return;
  		switch (plan) {
  			case SPLIT_RADIX:
  				a[offa + 1] = 0.5 * (a[offa] - a[offa + 1]);
  				a[offa] -= a[offa + 1];
  				if (n > 4) {
  					rftfsub(n, a, offa, nc, w, nw);
  					cftbsub(n, a, offa, ip, nw, w);
  				} else if (n == 4) {
  					cftxc020(a, offa);
  				}
  				if (scale) {
  					scale(n / 2, a, offa, false);
  				}
  				break;
  			case MIXED_RADIX:
  				for (int k = 2; k < n; k++) {
  					int idx = offa + k;
  					double tmp = a[idx - 1];
  					a[idx - 1] = a[idx];
  					a[idx] = tmp;
  				}
  				rfftb(a, offa);
  				if (scale) {
  					scale(n, a, offa, false);
  				}
  				break;
  			case BLUESTEIN:
  				bluestein_real_inverse(a, offa);
  				if (scale) {
  					scale(n, a, offa, false);
  				}
  				break;
  		}
  
  	}