commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Cyril Briquet (JIRA)" <j...@apache.org>
Subject [jira] Commented: (MATH-216) Faster and more computationally-efficient Fast Fourier Transform implementation
Date Sun, 25 Jan 2009 22:06:59 GMT

    [ https://issues.apache.org/jira/browse/MATH-216?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12667145#action_12667145
] 

Cyril Briquet commented on MATH-216:
------------------------------------

Tentative patch (RootsOfUnityOptimization-20090125.patch) to address issues #1 and #2 (fixes
RootsOfUnityOptimization-20081214.patch):

    * a private class RootsOfUnity is now instantiated to compute, and cache, the values of
the n-th 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 computationally-efficient Fast Fourier Transform implementation
> -------------------------------------------------------------------------------
>
>                 Key: MATH-216
>                 URL: https://issues.apache.org/jira/browse/MATH-216
>             Project: Commons Math
>          Issue Type: Improvement
>    Affects Versions: 1.2
>            Reporter: Daniel Kuan
>            Priority: Minor
>             Fix For: 2.1
>
>         Attachments: RootsOfUnityOptimization-20081214.patch
>
>
> Here are some suggestions on improving the speed and computational-efficiency 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.


Mime
View raw message