Xmipp  v3.23.11-Nereus
Classes | Macros | Functions
test_fftw_main.cpp File Reference
#include <core/xmipp_image.h>
#include <data/filters.h>
#include <core/xmipp_fftw.h>
#include <core/multidim_array.h>
#include <iostream>
#include <gtest/gtest.h>
Include dependency graph for test_fftw_main.cpp:

Go to the source code of this file.

Classes

class  FftwTest
 

Macros

#define len   128
 

Functions

 TEST_F (FftwTest, directFourierTransform)
 
 TEST_F (FftwTest, directFourierTransformComplex)
 
 TEST_F (FftwTest, fft_IDX2DIGFREQ)
 

Macro Definition Documentation

◆ len

#define len   128

Function Documentation

◆ TEST_F() [1/3]

TEST_F ( FftwTest  ,
directFourierTransform   
)

Definition at line 35 of file test_fftw_main.cpp.

36 {
37 
39  FourierTransformer transformer1;
40  transformer1.FourierTransform(mulDouble, FFT1, false);
42  auxFFT.resize(3,2);
43  DIRECT_A2D_ELEM(auxFFT,0,0) = std::complex<double>(2.77778,0);
44  DIRECT_A2D_ELEM(auxFFT,0,1) = std::complex<double>(-0.0555556,0.096225);
45  DIRECT_A2D_ELEM(auxFFT,1,0) = std::complex<double>(-0.388889,0.673575) ;
46  DIRECT_A2D_ELEM(auxFFT,1,1) = std::complex<double>(-0.388889,-0.096225);
47  DIRECT_A2D_ELEM(auxFFT,2,0) = std::complex<double>(-0.388889,-0.673575) ;
48  DIRECT_A2D_ELEM(auxFFT,2,1) = std::complex<double>(-0.0555556,0.288675) ;
49  EXPECT_EQ(FFT1,auxFFT);
50  transformer1.cleanup();
51 }
void resize(size_t Ndim, size_t Zdim, size_t Ydim, size_t Xdim, bool copy=true)
#define DIRECT_A2D_ELEM(v, i, j)
void FourierTransform(T &v, T1 &V, bool getCopy=true)
Definition: xmipp_fftw.h:166
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:1863

◆ TEST_F() [2/3]

TEST_F ( FftwTest  ,
directFourierTransformComplex   
)

Definition at line 53 of file test_fftw_main.cpp.

54 {
55 
56  MultidimArray< std::complex< double > > FFT1, complxDouble;
57  FourierTransformer transformer1;
58  typeCast(mulDouble, complxDouble);
59  transformer1.FourierTransform(complxDouble, FFT1, false);
60  transformer1.inverseFourierTransform();
61 
62  transformer1.inverseFourierTransform();
64  auxFFT.resize(3,3);
65  DIRECT_A2D_ELEM(auxFFT,0,0) = std::complex<double>(2.77778,0);
66  DIRECT_A2D_ELEM(auxFFT,0,1) = std::complex<double>(-0.0555556,0.096225);
67  DIRECT_A2D_ELEM(auxFFT,0,2) = std::complex<double>(-0.0555556,-0.096225);
68 
69  DIRECT_A2D_ELEM(auxFFT,1,0) = std::complex<double>(-0.388889,0.673575) ;
70  DIRECT_A2D_ELEM(auxFFT,1,1) = std::complex<double>(-0.388889,-0.096225);
71  DIRECT_A2D_ELEM(auxFFT,1,2) = std::complex<double>(-0.0555556,-0.288675);
72 
73  DIRECT_A2D_ELEM(auxFFT,2,0) = std::complex<double>(-0.388889,-0.673575) ;
74  DIRECT_A2D_ELEM(auxFFT,2,1) = std::complex<double>(-0.0555556,0.288675) ;
75  DIRECT_A2D_ELEM(auxFFT,2,2) = std::complex<double>(-0.388889,0.096225) ;
76  EXPECT_EQ(FFT1,auxFFT);
77  transformer1.cleanup();
78 }
void resize(size_t Ndim, size_t Zdim, size_t Ydim, size_t Xdim, bool copy=true)
void inverseFourierTransform()
Definition: xmipp_fftw.cpp:329
#define DIRECT_A2D_ELEM(v, i, j)
void FourierTransform(T &v, T1 &V, bool getCopy=true)
Definition: xmipp_fftw.h:166
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:1863
void typeCast(const Matrix1D< T1 > &v1, Matrix1D< T2 > &v2)
Definition: matrix1d.h:1227

◆ TEST_F() [3/3]

TEST_F ( FftwTest  ,
fft_IDX2DIGFREQ   
)

Definition at line 80 of file test_fftw_main.cpp.

81 {
82  double w;
83  FFT_IDX2DIGFREQ(0,128,w);
84  EXPECT_EQ(0,w);
85  FFT_IDX2DIGFREQ(1,128,w);
86  EXPECT_EQ(1.0/128.0,w);
87  FFT_IDX2DIGFREQ(64,128,w);
88  EXPECT_EQ(0.5,w);
89  FFT_IDX2DIGFREQ(65,128,w);
90  EXPECT_EQ(-63.0/128.0,w);
91  FFT_IDX2DIGFREQ(127,128,w);
92  EXPECT_EQ(-1.0/128.0,w);
93 
94  FFT_IDX2DIGFREQ(0,129,w);
95  EXPECT_EQ(0,w);
96  FFT_IDX2DIGFREQ(1,129,w);
97  EXPECT_EQ(1.0/129.0,w);
98  FFT_IDX2DIGFREQ(64,129,w);
99  EXPECT_EQ(64.0/129.0,w);
100  FFT_IDX2DIGFREQ(65,129,w);
101  EXPECT_EQ(-64.0/129.0,w);
102  FFT_IDX2DIGFREQ(128,129,w);
103  EXPECT_EQ(-1.0/129.0,w);
104 
105  size_t i=255;
106  size_t dim=256;
107  FFT_IDX2DIGFREQ(i,dim,w);
108  EXPECT_EQ(-1.0/256.0,w);
109 }
doublereal * w
#define i
__device__ float FFT_IDX2DIGFREQ(int idx, int size)
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:1863