3#if _MSC_VER >= 1900 && defined(_M_X64)
5#include "BackendBase.h"
13 class FL_EXPORT CTensor;
16 class FL_EXPORT CBackendFFT :
public CBackendBase<T>
20 CBackendFFT(
const CBackendFFT<T>& bf);
21 virtual ~CBackendFFT();
23 virtual const CResult SetFFTParams();
25 virtual bool CheckFFTSize(
const std::vector<int64_t>& vctShape)
const;
26 virtual T GetNormValue(ENormFFT eNormFFT,
bool bFFT, int64_t i64NormBase)
const;
27 virtual const CResult FFT(
const CTensor<T>* pTsrOperand, CTensor<T>* pTsrResult,
const std::vector<int64_t>* pVctResultShape, T tNorm);
28 virtual const CResult IFFT(
const CTensor<T>* pTsrOperand, CTensor<T>* pTsrResult,
const std::vector<int64_t>* pVctResultShape, T tNorm);
29 virtual const CResult ShiftFourier(
const CTensor<T>* pTsrOperand, CTensor<T>* pTsrResult,
bool bInverse);
30 virtual int64_t GetRequiredTemporaryMemory(
const std::vector<int64_t>& vctShape)
const;
32 DeclareGetClassType();
33 SupportToDuplicateObjectWithoutCreateNewObject(CBackendFFT<T>, *
this);
36 virtual bool CheckFirstTwo(int64_t i64Size)
const;
37 virtual void CalculateReverseOrder(int64_t* pI64Order, int64_t i64Length,
bool bFirstTwo);
38 virtual void CalibrationInterval(T* pTRealVal, T* pTImaginVal, int64_t i64Length,
bool bInverse);
39 virtual int64_t GetClosestPowerTwo(int64_t BaseNum);
40 virtual void MakeGBufferWidth(T* pTSource, T* pTRFTG, T* pTRealValWidth, T* pTImaginValWidth, int64_t i64OprWidth, int64_t i64DFTWidth,
bool bSrcReal);
41 virtual void MakeHBuffer(T* pTRFTH, T* pTRealValWidth, T* pTImaginValWidth, int64_t i64OprWidth, int64_t i64DFTWidth);
42 virtual void SetRFTTwo(T* pTSource, T* pTRFT, T* pTRFTEnd, int64_t* pI64OrderWidth,
bool bSrcReal, T tNorm);
43 virtual void SetRFTFour(T* pTSource, T* pTRFT, T* pTRFTEnd, int64_t* pI64OrderWidth,
bool bSrcReal, T tNorm);
44 virtual void SetRFTFourI(T* pTSource, T* pTRFT, T* pTRFTEnd, int64_t* pI64OrderWidth,
bool bSrcReal, T tNorm);
45 virtual void RFTCalc(T* pRFTBuffer, T* pTBufEnd, T* pTRealValWidth, T* pTImaginValWidth, int64_t i64CumulN, int64_t i64CycleLength);
46 virtual void RFTCalcI(T* pRFTBuffer, T* pTBufEnd, T* pTRealValWidth, T* pTImaginValWidth, int64_t i64CumulN, int64_t i64CycleLength);
47 virtual void MakeGBufferHeight(T* pTSource, T* pTGBuffer, int64_t* pI64OrderHeight, T* pTRealValHeight, T* pTImaginValHeight, int64_t i64BatchRowCount, int64_t i64OprHeight, int64_t i64OprWidth, int64_t i64DFTHeight);
48 virtual const CResult FFTHeightLoop(T* pTResultMemory, T* pTRealValHeight, T* pTImaginValHeight, int64_t i64BatchRowCount, int64_t i64DFTHeight, int64_t i64OprWidth,
bool bHeightFirstTwo);
49 virtual const CResult IFFTHeightLoop(T* pTResultMemory, T* pTRealValHeight, T* pTImaginValHeight, int64_t i64BatchRowCount, int64_t i64DFTHeight, int64_t i64OprWidth,
bool bHeightFirstTwo);
51 virtual const CResult FFTAssignNorm(T* pTSourceMemory, T* pTResultMemory, int64_t* pI64OrderHeight, int64_t i64BatchRowCount, int64_t i64DFTHeight, int64_t i64DFTWidth,
bool bOprReal,
bool bOrderHeight, T tNorm);
52 virtual const CResult FFTPowerTwo(T* pTSourceMemory, T* pTRFTBuffer, T* pTResultMemory, int64_t* pI64OrderWidth, int64_t* pI64OrderHeight, T* pTRealValWidth, T* pTImaginValWidth, int64_t i64BatchRowCount, int64_t i64DFTHeight, int64_t i64DFTWidth,
bool bWidthFirstTwo,
bool bOprReal,
bool bOrderHeight, T tNorm);
53 virtual const CResult IFFTPowerTwo(T* pTSourceMemory, T* pTRFTBuffer, T* pTResultMemory, int64_t* pI64OrderWidth, int64_t* pI64OrderHeight, T* pTRealValWidth, T* pTImaginValWidth, int64_t i64BatchRowCount, int64_t i64DFTHeight, int64_t i64DFTWidth,
bool bWidthFirstTwo,
bool bOprReal,
bool bOrderHeight, T tNorm);
54 virtual const CResult FFTChirpWidth(T* pTSourceMemory, T* pTRFTBuffer, T* pTHBuffer, T* pTResultMemory, int64_t* pI64OrderWidth, int64_t* pI64OrderHeight, T* pTRealValWidth, T* pTImaginValWidth, int64_t i64BatchRowCount, int64_t i64OprHeight, int64_t i64OprWidth, int64_t i64DFTWidth,
bool bWidthFirstTwo,
bool bOprReal,
bool bOrderHeight, T tNorm);
55 virtual const CResult IFFTChirpWidth(T* pTSourceMemory, T* pTRFTBuffer, T* pTHBuffer, T* pTResultMemory, int64_t* pI64OrderWidth, int64_t* pI64OrderHeight, T* pTRealValWidth, T* pTImaginValWidth, int64_t i64BatchRowCount, int64_t i64OprHeight, int64_t i64OprWidth, int64_t i64DFTWidth,
bool bWidthFirstTwo,
bool bOprReal,
bool bOrderHeight, T tNorm);
56 virtual const CResult FFTChirpHeight(T* pTResultMemory, int64_t* pI64OrderHeight, T* pTRealValHeight, T* pTImaginValHeight, T* pTHeightGBuffer, T* pTHeightTBuffer, T* pTHBuffer, int64_t i64BatchChannel, int64_t i64OprHeight, int64_t i64OprWidth, int64_t i64DFTHeight,
bool bHeightFirstTwo);
57 virtual const CResult IFFTChirpHeight(T* pTResultMemory, int64_t* pI64OrderHeight, T* pTRealValHeight, T* pTImaginValHeight, T* pTHeightGBuffer, T* pTHeightTBuffer, T* pTHBuffer, int64_t i64BatchChannel, int64_t i64OprHeight, int64_t i64OprWidth, int64_t i64DFTHeight,
bool bHeightFirstTwo);
Definition AlgorithmAIBase.h:18