Class PseudoPolarFourierTransform

  • All Implemented Interfaces:
    java.awt.event.ActionListener, java.awt.event.WindowListener, java.lang.Runnable, java.util.EventListener

    public class PseudoPolarFourierTransform
    extends AlgorithmBase
    Author:
    ilb This is a port of MATLAB code in the ppft2 download package by Yoel Shkolnisky. The Magic Square code used in testing is derived from the code in the article Magic Square by A. Riazi. The article states that the article has no explicit license attached to it. References: 1.) Pseudo-Polar and Discrete Radon Transforms Software Package Documentation by Yoel Shkolnisky February 19, 2003. 2.) DIRECT INVERSION OF THE THREE-DIMENSIONAL PSEUDO-POLAR FOURIER TRANSFORM AMIR AVERBUCH, GIL SHABAT, AND YOEL SHKOLNISKY SIAM J. SCI. COMPUT. 2016 Society for Industrial and Applied Mathematics Vol. 38, No. 2, pp. A1100-A1120 3.) A FRAMEWORK FOR DISCRETE INTEGRAL TRANSFORMATIONS I - THE PSEUDO-POLAR FOURIER TRANSFORM A. AVERBUCH, R.R. COIFMAN, D.L. DONOHO, M. ISRAELI, AND Y. SHKOLNISKY 4.) Y. Keller, Y. Shkolnisky, and A. Averbuch. Volume registration using the 3-D pseudo-polar Fourier transform. IEEE Transactions on Signal Processing, 54(11):4323-4331, 2006.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private double[][] adjCfrft​(double[][] x, double alpha)  
      private double[][] adjE​(double[][] v)  
      private double[][] adjF​(double[][] y)  
      private double[][] adjGKN​(double[][] w, int k)  
      private double[][] adjInvF​(double[][] v)  
      private double[][][] adjPPFT​(double[][][] pp1, double[][][] pp2)  
      private double[][] adjRadon​(double[][] r1, double[][] r2)  
      private double[][] adjU​(double[][] v)  
      private double[][][][] applyppftfilter​(double[][][][] X, double[][][][] filter)  
      private double[][] cdft​(double[] x)  
      private double[][] cdft​(double[][] x)  
      private double[][][] cdft2​(double[][] x)  
      private double[][][] cdft2​(double[][][] x)  
      private double[][][][] cdft3​(double[][][] x)  
      private double[][][][] cdft3​(double[][][][] x)  
      private double[][] cfft​(double[][] x)  
      private double[][][] cfft2​(double[][][] x)  
      private double[][][][] cfft3​(double[][][][] x)  
      private double[][] cfrft​(double[][] x, double alpha)  
      private double[][] cfrftV2​(double[][] x, double alpha)  
      private double[][][] cfrftV3​(double[][][] x, double alpha, double[][][] PQ, double[][][] PZ, int k)  
      private void cfrftV3_precomp​(double[][][] PQ, double[][][] PZ, int m, double[] alpha)  
      private void CG​(double[][][][] Y, int[] flag, double[] relres, int[] iter, double[] absres, boolean ref, double[][][][] X, double[][][][] filt, double ErrTol, int MaxIts, double[][][][] guess, boolean verbose, double[][][][] RefY)  
      private void CG​(double[][][] Y, int[] flag, double[] relres, int[] iter, double[] absres, double[][][] X, double ErrTol, int MaxIts, double[][][] guess, boolean verbose, double[][][] RefY)  
      private double[] chebzeros​(int n)  
      private int checkInput​(double[][][] pp1, double[][][] pp2)  
      private double[][] ChirpZ​(double[][] x, double[] A, double[] W, int M)  
      private void compare​(double[][] c1, double[][] c2)  
      private double[] compC​(int n, int j, int type)  
      private double[] compD​(int n, int j, int type)  
      private int[] createArray​(int lower, int upper)  
      private double[] dirichlet​(double[] t, int m)  
      private void DoublyEvenMagicSquare​(int[][] matrix, int n)  
      private void equals​(double[][][][][] v1, double[][][][][] v2, double eps, boolean[] ok, double[] error)  
      private void equals​(double[][][][] v1, double[][][][] v2, double eps, boolean[] ok, double[] error)  
      private double[][] fastfmmresample​(double[][] f, double[] yin, double[] xin, double[] dj, double[] cl, double EPS)  
      private double[][][] fftshift​(double[][][] in)  
      private double[][][][] fftshift​(double[][][][] in)  
      private double[][] fftshift1d​(double[][] x)  
      private void fippft3​(double[][][][] Y, int[] flag, double[] residual, int[] iter, double[][][][][] pp, double ErrTol, int MaxIts, boolean verbose)  
      private boolean floateq​(double[] x, double[] y)  
      private boolean floateq​(double x, double y)  
      private double[][][][] FPtP​(double[][][][] X, double[][][][] H)  
      private double[][] frft​(double[][] x, double alpha)  
      private java.lang.String getppfiltname​(int n)  
      private double[][] GKN​(double[][] x, int k)  
      private double[][] GKN3​(double[][] x, int k)  
      private int hiIdx​(int n)  
      private double I1​(double[][][] im, int n, double x, int v, int w)  
      private double I1​(double[][] im, int n, int u, double y)  
      private double I2​(double[][][] im, int n, int u, double y, int w)  
      private double I2​(double[][] im, int n, double x, int v)  
      private double I3​(double[][][] im, int n, int u, int v, double z)  
      private double[][] icdft​(double[][] x)  
      private double[][] icfft​(double[][] x)  
      private double[][][] icfft2​(double[][][] x)  
      private double[][][][] icfft3​(double[][][][] x)  
      private double[][][] ifftshift​(double[][][] in)  
      private double[][][][] ifftshift​(double[][][][] in)  
      private double[][] ifftshift1d​(double[][] x)  
      private double[][] invDecimatedFreqs​(double[][][] fim)  
      private double[] ip​(double[][][][][] a, double[][][][][] b)  
      private double[] ip​(double[][][][] a, double[][][][] b)  
      private double[] ip​(double[][][] a, double[][][] b)  
      private double ip​(double[][] a, double[][] b)  
      private void ippft​(double[][][] Y, int[] flag, double[] residual, int[] iter, double[][][] pp1, double[][][] pp2, double ErrTol, int MaxIts, boolean verbose)  
      private void ippft3​(double[][][][] Y, int[] flag, double[] residual, int[] iter, double[][][][][] pp, double ErrTol, int MaxIts, boolean verbose)  
      private void ippft3_ref​(double[][][][] Y, int[] flag, double[] residual, int[] iter, double[][][][][] pp, double ErrTol, int MaxIts, boolean verbose)  
      private void ippftconsts​(double[][][] c, double[][][] d, int n)  
      private double[][] ippftd​(double[][][] pp1, double[][][] pp2, double EPS)  
      private void ippftprecomp​(int n)  
      private void iRadon​(double[][][] Y, int[] flag, double[] residual, int[] iter, double[][][] res1, double[][][] res2, double ErrTol, int MaxIts, boolean verbose)  
      private void iradon3​(double[][][][] Y, int[] flag, double[] residual, int[] iter, double[][][][] res, double ErrTol, int MaxIts, boolean verbose)  
      private void loadConsts​(double[][][] c, double[][][] d, int n)  
      void loadppftfilter​(int[] precond, double[][][][] filter, java.lang.String fname, boolean verbose)  
      private double log2​(double input)  
      private int lowIdx​(int n)  
      private int[][] MagicSquare​(int n)  
      private double[][][][] makeppftfilter​(int n, int precond)  
      private int matlab_mod​(int j, int n)  
      private double mult​(int k, double alpha, int n)  
      private int N​(int k, int s)  
      private double[][][][] nufft_3d​(double[][][][] alpha, double[][] omega, int M)  
      private double[][][][] nufft3dauxmx​(int n, int M, int m, int q, int[] mu, double[] Px, double[] Py, double[] Pz, double[][] alpha)  
      private void OddMagicSquare​(int[][] matrix, int n)  
      private double[][][] OptimizedAdjPPFT​(double[][][] pp1, double[][][] pp2)  
      private void OptimizedPPFT​(double[][][] res1, double[][][] res2, double[][][] im)  
      private double[][] optimizedtansum​(double[][] alphain, double[] xin, double[] yin, double eps)  
      private void PPFT​(double[][][] res1, double[][][] res2, double[][][] im)  
      private double[][][][][] ppft3​(double[][][][] im)  
      private double[][][][][] ppft3_ref​(double[][][][] im)  
      private double[][][] PrecondAdjPPFT​(double[][][] pp1, double[][][] pp2)  
      private double[][][][] precondadjppft3​(double[][][][][] pp)  
      private double[][][][] precondadjppft3_ref​(double[][][][][] pp)  
      private void prepConstC​(double[][][] c, int n)  
      private void prepConstD​(double[][][] d, int n)  
      private double[][][] PtP​(double[][][] X)  
      private double[][][][] PtP3​(double[][][][] X)  
      private double[][][][] PtP3_ref​(double[][][][] X)  
      private void Radon​(double[][] res1, double[][] res2, double[][] im)  
      private double[][][][] Radon3​(double[][][][] im)  
      private double[][] recover​(double[][] fu, double[][] u, int j, int type, double[] dj, double[] cl, double EPS)  
      private void reportResult​(java.lang.String testMsg, boolean res, double err)  
      private void reportResult​(java.lang.String testMsg, int n, boolean res, double err, double t1, double t2)  
      void runAlgorithm()
      Starts the program.
      private void runTest​(double[][][][] pp, double ErrTol, int MaxIts, double[][][] ref, java.lang.String description, boolean verbose, boolean trueimage)  
      private void runTest​(double[][][] pp1, double[][][] pp2, double ErrTol, int MaxIts, double[][] ref, java.lang.String description, boolean verbose, boolean trueimage)  
      private void runTest​(int n, double[][][][][] pp, double ErrTol, int MaxIts, double[][][][] ref, boolean verbose, boolean doippt3_ref)  
      private void saveppftfilter​(int precond, double[][][][] filter, java.lang.String fname)  
      private void SinglyEvenMagicSquare​(int[][] matrix, int n)  
      private double[][] slowChirp​(double[][] x, double[] A, double[] W, int M)  
      private void slowPPFT​(double[][][] res1, double[][][] res2, double[][][] im)  
      private double[][][][][] slowppft3​(double[][][][] im)  
      private void slowRadon​(double[][] res1, double[][] res2, double[][] im)  
      private double[][][][] slowradon3​(double[][][][] im)  
      void testAdj()  
      void testCfft()  
      void testChirp()  
      void testippft()  
      void testippft3()  
      void testIRadon()  
      void testiRadon3()  
      void testOptimizedAdjPPFT()  
      void testppft3()  
      void testppft3_ref()  
      void testprecondAdjPPFT3​(boolean ref)  
      void testRadon()  
      private void topinv​(double[][] m1, double[][] m2, double[][] m3, double[][] m4, double[][] c, double[][] r)  
      private double[][] topinvmul​(double[][] D1, double[][] D2, double[][] D3, double[][] D4, double[][] v)  
      private double[][] topmul​(double[][] D, double[][] v)  
      private double[][] topprep​(double[][] c, double[][] r)  
      private void topprepinv​(double[][] D1, double[][] D2, double[][] D3, double[][] D4, double[][] m1, double[][] m2, double[][] m3, double[][] m4)  
      private double[][] topsol​(double[][] c, double[][] rin, double[][] y)  
      private int[] toUnaliasedCoord​(int[] aCoord, int[] N)  
      private int toUnaliasedIdx​(int idx, int n)  
      private double[] trigPoly​(double[][][][] im, double ox, double oy, double oz)  
      private double[] trigPoly​(double[][][] im, double xi1, double xi2)  
      boolean verifyImage​(double[][][][] im)  
      private int verifyPP​(double[][][][][] pp)  
      private double zabs​(double zr, double zi)
      zabs computes the absolute value or magnitude of a double precision complex variable zr + j*zi.
      private void zdiv​(double ar, double ai, double br, double bi, double[] cr, double[] ci)
      complex divide c = a/b.
      private void zexp​(double ar, double ai, double[] br, double[] bi)
      complex exponential function b = exp(a).
      private void zlog​(double ar, double ai, double[] br, double[] bi, int[] ierr)
      complex logarithm b = clog(a).
      private void zpow​(double zr, double zi, double a, double[] br, double[] bi, int[] ierr)
      b = z**a = exp(a*log(z))
      • Methods inherited from class java.lang.Thread

        activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • PseudoPolarFourierTransform

        public PseudoPolarFourierTransform()
    • Method Detail

      • testCfft

        public void testCfft()
      • testChirp

        public void testChirp()
      • compare

        private void compare​(double[][] c1,
                             double[][] c2)
      • testippft

        public void testippft()
      • MagicSquare

        private int[][] MagicSquare​(int n)
      • OddMagicSquare

        private void OddMagicSquare​(int[][] matrix,
                                    int n)
      • DoublyEvenMagicSquare

        private void DoublyEvenMagicSquare​(int[][] matrix,
                                           int n)
      • SinglyEvenMagicSquare

        private void SinglyEvenMagicSquare​(int[][] matrix,
                                           int n)
      • testOptimizedAdjPPFT

        public void testOptimizedAdjPPFT()
      • testAdj

        public void testAdj()
      • testRadon

        public void testRadon()
      • testIRadon

        public void testIRadon()
      • runTest

        private void runTest​(double[][][] pp1,
                             double[][][] pp2,
                             double ErrTol,
                             int MaxIts,
                             double[][] ref,
                             java.lang.String description,
                             boolean verbose,
                             boolean trueimage)
      • testppft3

        public void testppft3()
      • reportResult

        private void reportResult​(java.lang.String testMsg,
                                  int n,
                                  boolean res,
                                  double err,
                                  double t1,
                                  double t2)
      • testppft3_ref

        public void testppft3_ref()
      • reportResult

        private void reportResult​(java.lang.String testMsg,
                                  boolean res,
                                  double err)
      • testprecondAdjPPFT3

        public void testprecondAdjPPFT3​(boolean ref)
      • testippft3

        public void testippft3()
      • runTest

        private void runTest​(int n,
                             double[][][][][] pp,
                             double ErrTol,
                             int MaxIts,
                             double[][][][] ref,
                             boolean verbose,
                             boolean doippt3_ref)
      • testiRadon3

        public void testiRadon3()
      • runTest

        private void runTest​(double[][][][] pp,
                             double ErrTol,
                             int MaxIts,
                             double[][][] ref,
                             java.lang.String description,
                             boolean verbose,
                             boolean trueimage)
      • equals

        private void equals​(double[][][][][] v1,
                            double[][][][][] v2,
                            double eps,
                            boolean[] ok,
                            double[] error)
      • equals

        private void equals​(double[][][][] v1,
                            double[][][][] v2,
                            double eps,
                            boolean[] ok,
                            double[] error)
      • lowIdx

        private int lowIdx​(int n)
      • hiIdx

        private int hiIdx​(int n)
      • toUnaliasedIdx

        private int toUnaliasedIdx​(int idx,
                                   int n)
      • cdft

        private double[][] cdft​(double[] x)
      • cdft

        private double[][] cdft​(double[][] x)
      • cdft2

        private double[][][] cdft2​(double[][] x)
      • cdft2

        private double[][][] cdft2​(double[][][] x)
      • cdft3

        private double[][][][] cdft3​(double[][][] x)
      • cdft3

        private double[][][][] cdft3​(double[][][][] x)
      • icdft

        private double[][] icdft​(double[][] x)
      • fftshift1d

        private double[][] fftshift1d​(double[][] x)
      • ifftshift1d

        private double[][] ifftshift1d​(double[][] x)
      • cfft

        private double[][] cfft​(double[][] x)
      • icfft

        private double[][] icfft​(double[][] x)
      • fftshift

        private double[][][] fftshift​(double[][][] in)
      • ifftshift

        private double[][][] ifftshift​(double[][][] in)
      • fftshift

        private double[][][][] fftshift​(double[][][][] in)
      • ifftshift

        private double[][][][] ifftshift​(double[][][][] in)
      • cfft2

        private double[][][] cfft2​(double[][][] x)
      • icfft2

        private double[][][] icfft2​(double[][][] x)
      • cfft3

        private double[][][][] cfft3​(double[][][][] x)
      • icfft3

        private double[][][][] icfft3​(double[][][][] x)
      • frft

        private double[][] frft​(double[][] x,
                                double alpha)
      • cfrft

        private double[][] cfrft​(double[][] x,
                                 double alpha)
      • log2

        private double log2​(double input)
      • cfrftV2

        private double[][] cfrftV2​(double[][] x,
                                   double alpha)
      • zabs

        private double zabs​(double zr,
                            double zi)
        zabs computes the absolute value or magnitude of a double precision complex variable zr + j*zi.
        Parameters:
        zr - double
        zi - double
        Returns:
        double
      • zpow

        private void zpow​(double zr,
                          double zi,
                          double a,
                          double[] br,
                          double[] bi,
                          int[] ierr)
        b = z**a = exp(a*log(z))
        Parameters:
        zr -
        zi -
        a -
        br -
        bi -
        ierr -
      • zlog

        private void zlog​(double ar,
                          double ai,
                          double[] br,
                          double[] bi,
                          int[] ierr)
        complex logarithm b = clog(a).
        Parameters:
        ar - double
        ai - double
        br - double[]
        bi - double[]
        ierr - int[] ierr = 0, normal return ierr = 1, z = cmplx(0.0, 0.0)
      • zexp

        private void zexp​(double ar,
                          double ai,
                          double[] br,
                          double[] bi)
        complex exponential function b = exp(a).
        Parameters:
        ar - double
        ai - double
        br - double[]
        bi - double[]
      • zdiv

        private void zdiv​(double ar,
                          double ai,
                          double br,
                          double bi,
                          double[] cr,
                          double[] ci)
        complex divide c = a/b.
        Parameters:
        ar - double
        ai - double
        br - double
        bi - double
        cr - double[]
        ci - double[]
      • ChirpZ

        private double[][] ChirpZ​(double[][] x,
                                  double[] A,
                                  double[] W,
                                  int M)
      • slowChirp

        private double[][] slowChirp​(double[][] x,
                                     double[] A,
                                     double[] W,
                                     int M)
      • iRadon

        private void iRadon​(double[][][] Y,
                            int[] flag,
                            double[] residual,
                            int[] iter,
                            double[][][] res1,
                            double[][][] res2,
                            double ErrTol,
                            int MaxIts,
                            boolean verbose)
      • iradon3

        private void iradon3​(double[][][][] Y,
                             int[] flag,
                             double[] residual,
                             int[] iter,
                             double[][][][] res,
                             double ErrTol,
                             int MaxIts,
                             boolean verbose)
      • fippft3

        private void fippft3​(double[][][][] Y,
                             int[] flag,
                             double[] residual,
                             int[] iter,
                             double[][][][][] pp,
                             double ErrTol,
                             int MaxIts,
                             boolean verbose)
      • ippft3_ref

        private void ippft3_ref​(double[][][][] Y,
                                int[] flag,
                                double[] residual,
                                int[] iter,
                                double[][][][][] pp,
                                double ErrTol,
                                int MaxIts,
                                boolean verbose)
      • ippft3

        private void ippft3​(double[][][][] Y,
                            int[] flag,
                            double[] residual,
                            int[] iter,
                            double[][][][][] pp,
                            double ErrTol,
                            int MaxIts,
                            boolean verbose)
      • ippft

        private void ippft​(double[][][] Y,
                           int[] flag,
                           double[] residual,
                           int[] iter,
                           double[][][] pp1,
                           double[][][] pp2,
                           double ErrTol,
                           int MaxIts,
                           boolean verbose)
      • CG

        private void CG​(double[][][] Y,
                        int[] flag,
                        double[] relres,
                        int[] iter,
                        double[] absres,
                        double[][][] X,
                        double ErrTol,
                        int MaxIts,
                        double[][][] guess,
                        boolean verbose,
                        double[][][] RefY)
      • CG

        private void CG​(double[][][][] Y,
                        int[] flag,
                        double[] relres,
                        int[] iter,
                        double[] absres,
                        boolean ref,
                        double[][][][] X,
                        double[][][][] filt,
                        double ErrTol,
                        int MaxIts,
                        double[][][][] guess,
                        boolean verbose,
                        double[][][][] RefY)
      • dirichlet

        private double[] dirichlet​(double[] t,
                                   int m)
      • toUnaliasedCoord

        private int[] toUnaliasedCoord​(int[] aCoord,
                                       int[] N)
      • verifyImage

        public boolean verifyImage​(double[][][][] im)
      • adjF

        private double[][] adjF​(double[][] y)
      • chebzeros

        private double[] chebzeros​(int n)
      • fastfmmresample

        private double[][] fastfmmresample​(double[][] f,
                                           double[] yin,
                                           double[] xin,
                                           double[] dj,
                                           double[] cl,
                                           double EPS)
      • optimizedtansum

        private double[][] optimizedtansum​(double[][] alphain,
                                           double[] xin,
                                           double[] yin,
                                           double eps)
      • floateq

        private boolean floateq​(double x,
                                double y)
      • floateq

        private boolean floateq​(double[] x,
                                double[] y)
      • topsol

        private double[][] topsol​(double[][] c,
                                  double[][] rin,
                                  double[][] y)
      • topinv

        private void topinv​(double[][] m1,
                            double[][] m2,
                            double[][] m3,
                            double[][] m4,
                            double[][] c,
                            double[][] r)
      • topmul

        private double[][] topmul​(double[][] D,
                                  double[][] v)
      • topinvmul

        private double[][] topinvmul​(double[][] D1,
                                     double[][] D2,
                                     double[][] D3,
                                     double[][] D4,
                                     double[][] v)
      • topprep

        private double[][] topprep​(double[][] c,
                                   double[][] r)
      • topprepinv

        private void topprepinv​(double[][] D1,
                                double[][] D2,
                                double[][] D3,
                                double[][] D4,
                                double[][] m1,
                                double[][] m2,
                                double[][] m3,
                                double[][] m4)
      • invDecimatedFreqs

        private double[][] invDecimatedFreqs​(double[][][] fim)
      • ippftconsts

        private void ippftconsts​(double[][][] c,
                                 double[][][] d,
                                 int n)
      • prepConstD

        private void prepConstD​(double[][][] d,
                                int n)
      • N

        private int N​(int k,
                      int s)
      • createArray

        private int[] createArray​(int lower,
                                  int upper)
      • compD

        private double[] compD​(int n,
                               int j,
                               int type)
      • prepConstC

        private void prepConstC​(double[][][] c,
                                int n)
      • compC

        private double[] compC​(int n,
                               int j,
                               int type)
      • ippftprecomp

        private void ippftprecomp​(int n)
      • ippftd

        private double[][] ippftd​(double[][][] pp1,
                                  double[][][] pp2,
                                  double EPS)
      • checkInput

        private int checkInput​(double[][][] pp1,
                               double[][][] pp2)
      • loadConsts

        private void loadConsts​(double[][][] c,
                                double[][][] d,
                                int n)
      • recover

        private double[][] recover​(double[][] fu,
                                   double[][] u,
                                   int j,
                                   int type,
                                   double[] dj,
                                   double[] cl,
                                   double EPS)
      • adjGKN

        private double[][] adjGKN​(double[][] w,
                                  int k)
      • adjU

        private double[][] adjU​(double[][] v)
      • adjE

        private double[][] adjE​(double[][] v)
      • adjCfrft

        private double[][] adjCfrft​(double[][] x,
                                    double alpha)
      • adjInvF

        private double[][] adjInvF​(double[][] v)
      • adjPPFT

        private double[][][] adjPPFT​(double[][][] pp1,
                                     double[][][] pp2)
      • PrecondAdjPPFT

        private double[][][] PrecondAdjPPFT​(double[][][] pp1,
                                            double[][][] pp2)
      • OptimizedAdjPPFT

        private double[][][] OptimizedAdjPPFT​(double[][][] pp1,
                                              double[][][] pp2)
      • adjRadon

        private double[][] adjRadon​(double[][] r1,
                                    double[][] r2)
      • ip

        private double ip​(double[][] a,
                          double[][] b)
      • ip

        private double[] ip​(double[][][] a,
                            double[][][] b)
      • ip

        private double[] ip​(double[][][][] a,
                            double[][][][] b)
      • ip

        private double[] ip​(double[][][][][] a,
                            double[][][][][] b)
      • GKN

        private double[][] GKN​(double[][] x,
                               int k)
      • GKN3

        private double[][] GKN3​(double[][] x,
                                int k)
      • PPFT

        private void PPFT​(double[][][] res1,
                          double[][][] res2,
                          double[][][] im)
      • OptimizedPPFT

        private void OptimizedPPFT​(double[][][] res1,
                                   double[][][] res2,
                                   double[][][] im)
      • slowPPFT

        private void slowPPFT​(double[][][] res1,
                              double[][][] res2,
                              double[][][] im)
      • slowppft3

        private double[][][][][] slowppft3​(double[][][][] im)
      • trigPoly

        private double[] trigPoly​(double[][][] im,
                                  double xi1,
                                  double xi2)
      • trigPoly

        private double[] trigPoly​(double[][][][] im,
                                  double ox,
                                  double oy,
                                  double oz)
      • Radon

        private void Radon​(double[][] res1,
                           double[][] res2,
                           double[][] im)
      • Radon3

        private double[][][][] Radon3​(double[][][][] im)
      • slowRadon

        private void slowRadon​(double[][] res1,
                               double[][] res2,
                               double[][] im)
      • slowradon3

        private double[][][][] slowradon3​(double[][][][] im)
      • I1

        private double I1​(double[][] im,
                          int n,
                          int u,
                          double y)
      • I1

        private double I1​(double[][][] im,
                          int n,
                          double x,
                          int v,
                          int w)
      • I2

        private double I2​(double[][] im,
                          int n,
                          double x,
                          int v)
      • I2

        private double I2​(double[][][] im,
                          int n,
                          int u,
                          double y,
                          int w)
      • I3

        private double I3​(double[][][] im,
                          int n,
                          int u,
                          int v,
                          double z)
      • PtP

        private double[][][] PtP​(double[][][] X)
      • cfrftV3_precomp

        private void cfrftV3_precomp​(double[][][] PQ,
                                     double[][][] PZ,
                                     int m,
                                     double[] alpha)
      • cfrftV3

        private double[][][] cfrftV3​(double[][][] x,
                                     double alpha,
                                     double[][][] PQ,
                                     double[][][] PZ,
                                     int k)
      • ppft3

        private double[][][][][] ppft3​(double[][][][] im)
      • ppft3_ref

        private double[][][][][] ppft3_ref​(double[][][][] im)
      • precondadjppft3

        private double[][][][] precondadjppft3​(double[][][][][] pp)
      • precondadjppft3_ref

        private double[][][][] precondadjppft3_ref​(double[][][][][] pp)
      • verifyPP

        private int verifyPP​(double[][][][][] pp)
      • mult

        private double mult​(int k,
                            double alpha,
                            int n)
      • PtP3

        private double[][][][] PtP3​(double[][][][] X)
      • PtP3_ref

        private double[][][][] PtP3_ref​(double[][][][] X)
      • getppfiltname

        private java.lang.String getppfiltname​(int n)
      • saveppftfilter

        private void saveppftfilter​(int precond,
                                    double[][][][] filter,
                                    java.lang.String fname)
      • loadppftfilter

        public void loadppftfilter​(int[] precond,
                                   double[][][][] filter,
                                   java.lang.String fname,
                                   boolean verbose)
      • makeppftfilter

        private double[][][][] makeppftfilter​(int n,
                                              int precond)
      • nufft_3d

        private double[][][][] nufft_3d​(double[][][][] alpha,
                                        double[][] omega,
                                        int M)
      • matlab_mod

        private int matlab_mod​(int j,
                               int n)
      • nufft3dauxmx

        private double[][][][] nufft3dauxmx​(int n,
                                            int M,
                                            int m,
                                            int q,
                                            int[] mu,
                                            double[] Px,
                                            double[] Py,
                                            double[] Pz,
                                            double[][] alpha)
      • FPtP

        private double[][][][] FPtP​(double[][][][] X,
                                    double[][][][] H)
      • applyppftfilter

        private double[][][][] applyppftfilter​(double[][][][] X,
                                               double[][][][] filter)