code: public void realForwardFull(double[] a) {
  		// handle special case
  		if( rows == 1 || columns == 1 ) {
  			if( rows > 1 )
  				fftRows.realForwardFull(a);
  			else
  				fftColumns.realForwardFull(a);
  			return;
  		}
  
  		if (isPowerOfTwo) {
  			for (int r = 0; r < rows; r++) {
  				fftColumns.realForward(a, r * columns);
  			}
  			cdft2d_sub(-1, a, true);
  			rdft2d_sub(1, a);
  			fillSymmetric(a);
  		} else {
  			declareRadixRealData();
  			mixedRadixRealForwardFull(a);
  		}
  	}
docs: Computes 2D forward DFT of real data leaving the result in <code>a</code>
  . This method computes full real forward transform, i.e. you will get the
  same result as from <code>complexForward</code> called with all imaginary
  part equal 0. Because the result is stored in <code>a</code>, the input
  array must be of size rows*2*columns, with only the first rows*columns
  elements filled with real data. To get back the original data, use
  <code>complexInverse</code> on the output of this method.
  
  @param a
  data to transform