wendykierp / JTransforms

JTransforms is the first, open source, multithreaded FFT library written in pure Java.
Other
370 stars 89 forks source link

Javadoc issue ? (realForward output) #19

Closed aringot closed 5 years ago

aringot commented 5 years ago

Hello,

I found a somewhat confusing function description in DoubleFFT_1D.java

Is the realForward function really returning a[1] = Re[n/2] ? A real unrelated to the (also real) 0th element instead of the imaginary part of the 0th element ? (that's the even case, but same question for the odd case, I'd expect the last element to be lonely, but the 0th and 1st values to be related to each other)

Relevant description:

/**
             * Computes 1D forward DFT of real data leaving the result in <code>a</code>
             * . The physical layout of the output data is as follows:<br>
             *
             * if n is even then
             *
             * <pre>
             * a[2*k] = Re[k], 0&lt;=k&lt;n/2
             * a[2*k+1] = Im[k], 0&lt;k&lt;n/2
             * a[1] = Re[n/2]
             * </pre>
             *
             * if n is odd then
             *
             * <pre>
             * a[2*k] = Re[k], 0&lt;=k&lt;(n+1)/2
             * a[2*k+1] = Im[k], 0&lt;k&lt;(n-1)/2
             * a[1] = Im[(n-1)/2]
             * </pre>
             *
             * This method computes only half of the elements of the real transform. The
             * other half satisfies the symmetry condition. If you want the full real
             * forward transform, use <code>realForwardFull</code>. To get back the
             * original data, use <code>realInverse</code> on the output of this method.
             *
             * @param a
             *            data to transform
             */
            public void realForward(double[] a) {

Thank you !

wendykierp commented 5 years ago

The documentation is correct.

aringot commented 5 years ago

Thank you for the quick answer. Any reason not to return the imaginary part of the 0th element ?

wendykierp commented 5 years ago

The imaginary part of the 0th element is always 0.

aringot commented 5 years ago

Thanks :)