[ https://issues.apache.org/jira/browse/MATH216?page=com.atlassian.jira.plugin.system.issuetabpanels:commenttabpanel&focusedCommentId=12667145#action_12667145
]
Cyril Briquet commented on MATH216:

Tentative patch (RootsOfUnityOptimization20090125.patch) to address issues #1 and #2 (fixes
RootsOfUnityOptimization20081214.patch):
* a private class RootsOfUnity is now instantiated to compute, and cache, the values of
the nth roots of unity for a given FF transform
* the computations of roots of unity now rely on 3 double[] rather than 1 Complex[]
* the computations of roots of unity are now computed simultaneously for both the forward
and inverse transforms
> Faster and more computationallyefficient Fast Fourier Transform implementation
> 
>
> Key: MATH216
> URL: https://issues.apache.org/jira/browse/MATH216
> Project: Commons Math
> Issue Type: Improvement
> Affects Versions: 1.2
> Reporter: Daniel Kuan
> Priority: Minor
> Fix For: 2.1
>
> Attachments: RootsOfUnityOptimization20081214.patch
>
>
> Here are some suggestions on improving the speed and computationalefficiency of FastFourierTransformer.
> 1. Store roots of unity as a double array of arrays instead of Complex array.
> No need for all the functionality that comes with class Complex when all that is required
are the values of the roots of unity.
> 2. Keep track of the largest set of roots of unity calculated so far, and adopt Singleton
pattern.
> Subsequent requests for smaller sets of roots of unity can be derived from the largest
set  no need to recalculate the roots of unity from scratch.
> 3. When computing the nth roots of unity, need only compute n/4 roots instead of all
n roots.
> Since the roots of unity lie along a circle of unity radius, trigonometric relations
can be leveraged to reduce the number of roots that need to be computed from n to n/4.
> 4. Execute transform algorithm on double primitives instead of on class Complex.
> New instances of Complex are instantiated each time a simple arithmetic operation is
performed on the Complex variables. Much time is lost to object creation and initialisation.

This message is automatically generated by JIRA.

You can reply to this email to add a comment to the issue online.
