Chris@41: Chris@93: module yetilab.transform.test.test_fft; Chris@41: Chris@93: { realForward, realInverse } = load yetilab.transform.fft; Chris@93: { list, fromList } = load yetilab.block.block; Chris@93: { complex } = load yetilab.block.complex; Chris@46: Chris@93: { compare } = load yetilab.test.test; Chris@41: Chris@48: testFFT orig reals imags = Chris@48: (out = realForward (length orig) (fromList orig); Chris@48: back = realInverse (length orig) out; Chris@48: compare out (array (map2 complex reals imags)) and compare orig (list back)); Chris@48: Chris@53: [ Chris@41: Chris@41: "dc": \( Chris@48: testFFT [1,1,1,1] [4,0,0] [0,0,0]; Chris@41: ), Chris@41: Chris@41: "sine": \( Chris@48: testFFT [0,1,0,-1] [0,0,0] [0,-2,0]; Chris@41: ), Chris@41: Chris@41: "cosine": \( Chris@48: testFFT [1,0,-1,0] [0,2,0] [0,0,0]; Chris@41: ), Chris@41: Chris@41: "sineCosine": \( Chris@48: testFFT [0.5,1,-0.5,-1] [0,1,0] [0,-2,0]; Chris@41: ), Chris@41: Chris@41: "nyquist": \( Chris@48: testFFT [1,-1,1,-1] [0,0,4] [0,0,0]; Chris@41: ), Chris@41: Chris@41: "dirac": \( Chris@48: testFFT [1,0,0,0] [1,1,1] [0,0,0] and Chris@48: testFFT [0,1,0,0] [1,0,-1] [0,-1,0] and Chris@48: testFFT [0,0,1,0] [1,-1,1] [0,0,0] and Chris@48: testFFT [0,0,0,1] [1,0,-1] [0,1,0]; Chris@41: ), Chris@41: Chris@53: ] is hash boolean>; Chris@41: Chris@41: