added simple fft
This commit is contained in:
57
lib/simple_fft/error_handling.hpp
Normal file
57
lib/simple_fft/error_handling.hpp
Normal file
@@ -0,0 +1,57 @@
|
||||
#ifndef __SIMPLE_FFT__ERROR_HANDLING_HPP
|
||||
#define __SIMPLE_FFT__ERROR_HANDLING_HPP
|
||||
|
||||
namespace simple_fft {
|
||||
namespace error_handling {
|
||||
|
||||
enum EC_SimpleFFT
|
||||
{
|
||||
EC_SUCCESS = 0,
|
||||
EC_UNSUPPORTED_DIMENSIONALITY,
|
||||
EC_WRONG_FFT_DIRECTION,
|
||||
EC_ONE_OF_DIMS_ISNT_POWER_OF_TWO,
|
||||
EC_NUM_OF_ELEMS_IS_ZERO,
|
||||
EC_WRONG_CHECK_FFT_MODE,
|
||||
EC_RELATIVE_ERROR_TOO_LARGE
|
||||
};
|
||||
|
||||
inline void GetErrorDescription(const EC_SimpleFFT error_code,
|
||||
const char *& error_description)
|
||||
{
|
||||
switch(error_code)
|
||||
{
|
||||
case EC_SUCCESS:
|
||||
error_description = "Calculation was successful!";
|
||||
break;
|
||||
case EC_UNSUPPORTED_DIMENSIONALITY:
|
||||
error_description = "Unsupported dimensionality: currently only 1D, 2D "
|
||||
"and 3D arrays are supported";
|
||||
break;
|
||||
case EC_WRONG_FFT_DIRECTION:
|
||||
error_description = "Wrong direction for FFT was specified";
|
||||
break;
|
||||
case EC_ONE_OF_DIMS_ISNT_POWER_OF_TWO:
|
||||
error_description = "Unsupported dimensionality: one of dimensions is not "
|
||||
"a power of 2";
|
||||
break;
|
||||
case EC_NUM_OF_ELEMS_IS_ZERO:
|
||||
error_description = "Number of elements for FFT or IFFT is zero!";
|
||||
break;
|
||||
case EC_WRONG_CHECK_FFT_MODE:
|
||||
error_description = "Wrong check FFT mode was specified (should be either "
|
||||
"Parseval theorem or energy conservation check";
|
||||
break;
|
||||
case EC_RELATIVE_ERROR_TOO_LARGE:
|
||||
error_description = "Relative error returned by FFT test exceeds specified "
|
||||
"relative tolerance";
|
||||
break;
|
||||
default:
|
||||
error_description = "Unknown error";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace error_handling
|
||||
} // namespace simple_fft
|
||||
|
||||
#endif // __SIMPLE_FFT__ERROR_HANDLING_HPP
|
||||
Reference in New Issue
Block a user