ViennaCL - The Vienna Computing Library  1.7.0
Free open-source GPU-accelerated linear algebra and solver library.
fft_1d.cpp File Reference
#include <iostream>
#include <vector>
#include <cmath>
#include <complex>
#include <algorithm>
#include "viennacl/linalg/host_based/fft_operations.hpp"
#include "viennacl/linalg/fft_operations.hpp"
#include "viennacl/fft.hpp"

Go to the source code of this file.

Classes

struct  testData
 

Typedefs

typedef float ScalarType
 
typedef ScalarType(* test_function_ptr) (std::vector< ScalarType > &, std::vector< ScalarType > &, unsigned int, unsigned int, unsigned int)
 
typedef void(* input_function_ptr) (std::vector< ScalarType > &, std::vector< ScalarType > &, unsigned int &, unsigned int &, unsigned int &, const std::string &)
 

Functions

void set_values_struct (std::vector< ScalarType > &input, std::vector< ScalarType > &output, unsigned int &rows, unsigned int &cols, unsigned int &batch_size, testData &data)
 
void set_values_struct (std::vector< ScalarType > &input, std::vector< ScalarType > &input2, std::vector< ScalarType > &output, unsigned int &rows, unsigned int &cols, unsigned int &batch_size, testData &data)
 
void read_vectors_pair (std::vector< ScalarType > &input, std::vector< ScalarType > &output, unsigned int &rows, unsigned int &cols, unsigned int &batch_size, const std::string &log_tag)
 
void read_vectors_three (std::vector< ScalarType > &input, std::vector< ScalarType > &input2, std::vector< ScalarType > &output, unsigned int &rows, unsigned int &cols, unsigned int &batch_size, const std::string &log_tag)
 
template<typename ScalarType >
ScalarType diff (std::vector< ScalarType > &vec, std::vector< ScalarType > &ref)
 
template<typename ScalarType >
ScalarType diff_max (std::vector< ScalarType > &vec, std::vector< ScalarType > &ref)
 
template<class SCALARTYPE , unsigned int ALIGNMENT>
void copy_to_vector (std::complex< SCALARTYPE > *input_complex, viennacl::vector< SCALARTYPE, ALIGNMENT > &in, unsigned int size)
 
template<class SCALARTYPE >
void copy_to_vector (std::complex< SCALARTYPE > *input_complex, SCALARTYPE *in, unsigned int size)
 
template<class SCALARTYPE >
void copy_to_complex_array (std::complex< SCALARTYPE > *input_complex, const SCALARTYPE *in, int size)
 
void convolve_ref (std::vector< ScalarType > &in1, std::vector< ScalarType > &in2, std::vector< ScalarType > &out)
 
ScalarType fft (std::vector< ScalarType > &in, std::vector< ScalarType > &out, unsigned int, unsigned int, unsigned int batch_size)
 
ScalarType direct (std::vector< ScalarType > &in, std::vector< ScalarType > &out, unsigned int, unsigned int, unsigned int batch_num)
 
ScalarType bluestein (std::vector< ScalarType > &in, std::vector< ScalarType > &out, unsigned int, unsigned int, unsigned int batch_size)
 
ScalarType radix2 (std::vector< ScalarType > &in, std::vector< ScalarType > &out, unsigned int, unsigned int, unsigned int batch_num)
 
ScalarType fft_ifft_radix2 (std::vector< ScalarType > &in, std::vector< ScalarType > &, unsigned int, unsigned int, unsigned int batch_num)
 
ScalarType ifft_fft_radix2 (std::vector< ScalarType > &in, std::vector< ScalarType > &, unsigned int, unsigned int, unsigned int batch_num)
 
ScalarType fft_reverse_direct (std::vector< ScalarType > &in, std::vector< ScalarType > &out, unsigned int, unsigned int, unsigned int)
 
ScalarType real_to_complex (std::vector< ScalarType > &in, std::vector< ScalarType > &out, unsigned int, unsigned int, unsigned int)
 
ScalarType complex_to_real (std::vector< ScalarType > &in, std::vector< ScalarType > &out, unsigned int, unsigned int, unsigned int)
 
ScalarType multiply_complex (std::vector< ScalarType > &in, std::vector< ScalarType > &in2, std::vector< ScalarType > &out)
 
ScalarType convolve (std::vector< ScalarType > &in1, std::vector< ScalarType > &in2, unsigned int, unsigned int, unsigned int)
 
int test_correctness (const std::string &log_tag, input_function_ptr input_function, test_function_ptr func)
 
int testcorrectnes_multiply (const std::string &log_tag)
 
int main ()
 

Variables

const ScalarType EPS = ScalarType(0.06f)
 

Detailed Description

Tests the one-dimensional FFT routines.

Test:
Tests the one-dimensional FFT routines.

Definition in file fft_1d.cpp.

Typedef Documentation

typedef void(* input_function_ptr) (std::vector< ScalarType > &, std::vector< ScalarType > &, unsigned int &, unsigned int &, unsigned int &, const std::string &)

Definition at line 48 of file fft_1d.cpp.

typedef ScalarType(* test_function_ptr) (std::vector< ScalarType > &, std::vector< ScalarType > &, unsigned int, unsigned int, unsigned int)

Definition at line 46 of file fft_1d.cpp.

Function Documentation

ScalarType bluestein ( std::vector< ScalarType > &  in,
std::vector< ScalarType > &  out,
unsigned  int,
unsigned  int,
unsigned int  batch_size 
)

Definition at line 762 of file fft_1d.cpp.

ScalarType complex_to_real ( std::vector< ScalarType > &  in,
std::vector< ScalarType > &  out,
unsigned  int,
unsigned  int,
unsigned  int 
)

Definition at line 896 of file fft_1d.cpp.

ScalarType convolve ( std::vector< ScalarType > &  in1,
std::vector< ScalarType > &  in2,
unsigned  int,
unsigned  int,
unsigned  int 
)

Definition at line 944 of file fft_1d.cpp.

void convolve_ref ( std::vector< ScalarType > &  in1,
std::vector< ScalarType > &  in2,
std::vector< ScalarType > &  out 
)

Definition at line 693 of file fft_1d.cpp.

template<class SCALARTYPE >
void copy_to_complex_array ( std::complex< SCALARTYPE > *  input_complex,
const SCALARTYPE *  in,
int  size 
)

Definition at line 680 of file fft_1d.cpp.

template<class SCALARTYPE , unsigned int ALIGNMENT>
void copy_to_vector ( std::complex< SCALARTYPE > *  input_complex,
viennacl::vector< SCALARTYPE, ALIGNMENT > &  in,
unsigned int  size 
)

Definition at line 658 of file fft_1d.cpp.

template<class SCALARTYPE >
void copy_to_vector ( std::complex< SCALARTYPE > *  input_complex,
SCALARTYPE *  in,
unsigned int  size 
)

Definition at line 668 of file fft_1d.cpp.

template<typename ScalarType >
ScalarType diff ( std::vector< ScalarType > &  vec,
std::vector< ScalarType > &  ref 
)

Definition at line 621 of file fft_1d.cpp.

template<typename ScalarType >
ScalarType diff_max ( std::vector< ScalarType > &  vec,
std::vector< ScalarType > &  ref 
)

Definition at line 636 of file fft_1d.cpp.

ScalarType direct ( std::vector< ScalarType > &  in,
std::vector< ScalarType > &  out,
unsigned  int,
unsigned  int,
unsigned int  batch_num 
)

Definition at line 740 of file fft_1d.cpp.

ScalarType fft ( std::vector< ScalarType > &  in,
std::vector< ScalarType > &  out,
unsigned  int,
unsigned  int,
unsigned int  batch_size 
)
Examples:
fft.cpp.

Definition at line 719 of file fft_1d.cpp.

ScalarType fft_ifft_radix2 ( std::vector< ScalarType > &  in,
std::vector< ScalarType > &  ,
unsigned  int,
unsigned  int,
unsigned int  batch_num 
)

Definition at line 805 of file fft_1d.cpp.

ScalarType fft_reverse_direct ( std::vector< ScalarType > &  in,
std::vector< ScalarType > &  out,
unsigned  int,
unsigned  int,
unsigned  int 
)

Definition at line 851 of file fft_1d.cpp.

ScalarType ifft_fft_radix2 ( std::vector< ScalarType > &  in,
std::vector< ScalarType > &  ,
unsigned  int,
unsigned  int,
unsigned int  batch_num 
)

Definition at line 828 of file fft_1d.cpp.

int main ( )

Definition at line 1018 of file fft_1d.cpp.

ScalarType multiply_complex ( std::vector< ScalarType > &  in,
std::vector< ScalarType > &  in2,
std::vector< ScalarType > &  out 
)

Definition at line 918 of file fft_1d.cpp.

ScalarType radix2 ( std::vector< ScalarType > &  in,
std::vector< ScalarType > &  out,
unsigned  int,
unsigned  int,
unsigned int  batch_num 
)

Definition at line 783 of file fft_1d.cpp.

void read_vectors_pair ( std::vector< ScalarType > &  input,
std::vector< ScalarType > &  output,
unsigned int &  rows,
unsigned int &  cols,
unsigned int &  batch_size,
const std::string &  log_tag 
)

Definition at line 584 of file fft_1d.cpp.

void read_vectors_three ( std::vector< ScalarType > &  input,
std::vector< ScalarType > &  input2,
std::vector< ScalarType > &  output,
unsigned int &  rows,
unsigned int &  cols,
unsigned int &  batch_size,
const std::string &  log_tag 
)

Definition at line 611 of file fft_1d.cpp.

ScalarType real_to_complex ( std::vector< ScalarType > &  in,
std::vector< ScalarType > &  out,
unsigned  int,
unsigned  int,
unsigned  int 
)

Definition at line 873 of file fft_1d.cpp.

void set_values_struct ( std::vector< ScalarType > &  input,
std::vector< ScalarType > &  output,
unsigned int &  rows,
unsigned int &  cols,
unsigned int &  batch_size,
testData data 
)

Definition at line 540 of file fft_1d.cpp.

void set_values_struct ( std::vector< ScalarType > &  input,
std::vector< ScalarType > &  input2,
std::vector< ScalarType > &  output,
unsigned int &  rows,
unsigned int &  cols,
unsigned int &  batch_size,
testData data 
)

Definition at line 561 of file fft_1d.cpp.

int test_correctness ( const std::string &  log_tag,
input_function_ptr  input_function,
test_function_ptr  func 
)

Definition at line 970 of file fft_1d.cpp.

int testcorrectnes_multiply ( const std::string &  log_tag)

Definition at line 997 of file fft_1d.cpp.

Variable Documentation

const ScalarType EPS = ScalarType(0.06f)

Definition at line 44 of file fft_1d.cpp.