Chris@33: Chris@222: module yetilab.vector.test.test_blockfuncs; Chris@33: Chris@33: stdSqrt = sqrt; Chris@33: Chris@273: { zeros, consts, ones, fromList, list } = load yetilab.vector; Chris@256: { sum, max, min, mean, add, subtract, multiply, divideBy, scaled, abs, sqr, sqrt, rms, fftshift, ifftshift } = load yetilab.vector.blockfuncs; Chris@93: { compare } = load yetilab.test.test; Chris@33: Chris@53: [ Chris@33: Chris@33: "sum": \( Chris@33: compare ((sum . zeros) 0) 0 and Chris@33: compare ((sum . zeros) 5) 0 and Chris@33: compare ((sum . ones) 5) 5 and Chris@33: compare ((sum . fromList) [1,-2,3,0]) 2 Chris@33: ), Chris@33: Chris@229: "max": \( Chris@229: compare ((max . fromList) [1,-2,3,0]) 3 and Chris@229: compare ((max . fromList) [-1,-2,-3]) (-1) and Chris@229: compare ((max . fromList) [4,1]) 4 and Chris@229: compare ((max . fromList) []) 0 Chris@229: ), Chris@229: Chris@229: "min": \( Chris@229: compare ((min . fromList) [1,-2,3,0]) (-2) and Chris@229: compare ((min . fromList) [-1,-2,-3]) (-3) and Chris@229: compare ((min . fromList) [4,1]) 1 and Chris@229: compare ((min . fromList) []) 0 Chris@229: ), Chris@229: Chris@33: "mean": \( Chris@33: compare ((mean . zeros) 0) 0 and Chris@33: compare ((mean . zeros) 5) 0 and Chris@33: compare ((mean . ones) 5) 1 and Chris@33: compare ((mean . fromList) [1,-2,3,0]) 0.5 Chris@33: ), Chris@33: Chris@256: "add": \( Chris@297: compare (list (add [zeros 0, ones 5])) [] and Chris@297: compare (list (add [consts 3 4, fromList [1,2,3] ])) [4,5,6] and Chris@297: compare (list (add [consts (-3) 4, fromList [1,2,3] ])) [-2,-1,0] Chris@256: ), Chris@256: Chris@256: "subtract": \( Chris@256: compare (list (subtract (zeros 0) (ones 5))) [] and Chris@256: compare (list (subtract (consts 3 4) (fromList [1,2,3]))) [2,1,0] and Chris@256: compare (list (subtract (consts (-3) 4) (fromList [1,2,3]))) [-4,-5,-6] Chris@256: ), Chris@256: Chris@36: "multiply": \( Chris@36: compare (list (multiply (zeros 0) (ones 5))) [] and Chris@36: compare (list (multiply (consts (-3) 4) (fromList [1,2,3]))) [-3,-6,-9] Chris@36: ), Chris@36: Chris@40: "divideBy": \( Chris@40: compare (list (divideBy 5 (ones 0))) [] and Chris@40: compare (list (divideBy 5 (fromList [1,2,-3]))) [0.2,0.4,-0.6] Chris@40: ), Chris@40: Chris@256: "scaled": \( Chris@256: compare (list (scaled 5 (ones 0))) [] and Chris@256: compare (list (scaled 5 (fromList [1,2,-3]))) [5,10,-15] Chris@256: ), Chris@256: Chris@256: "abs": \( Chris@256: compare (list (abs (ones 0))) [] and Chris@256: compare (list (abs (fromList [1,2,-3]))) [1,2,3] Chris@256: ), Chris@256: Chris@33: "sqr": \( Chris@33: compare ((list . sqr . zeros) 0) [] and Chris@33: compare ((list . sqr . ones) 5) [1,1,1,1,1] and Chris@33: compare ((list . sqr . fromList) [0.5,-2,3,0]) [0.25,4,9,0] Chris@33: ), Chris@33: Chris@33: "sqrt": \( Chris@33: compare ((list . sqrt . zeros) 0) [] and Chris@33: compare ((list . sqrt . ones) 5) [1,1,1,1,1] and Chris@33: compare ((list . sqrt . fromList) [0.25,4,9,0]) [0.5,2,3,0] Chris@33: ), Chris@33: Chris@33: "rms": \( Chris@33: compare ((rms . zeros) 0) 0 and Chris@33: compare ((rms . ones) 5) 1 and Chris@33: compare ((rms . fromList) [-1,2,2]) (stdSqrt 3) Chris@33: ), Chris@33: Chris@37: "fftshift": \( Chris@37: compare ((list . fftshift . zeros) 0) [] and Chris@37: compare ((list . fftshift . fromList) [1,2,3,4]) [3,4,1,2] and Chris@37: compare ((list . fftshift . fromList) [1,2,3,4,5]) [4,5,1,2,3] Chris@37: ), Chris@37: Chris@37: "ifftshift": \( Chris@37: compare ((list . ifftshift . zeros) 0) [] and Chris@37: compare ((list . ifftshift . fromList) [3,4,1,2]) [1,2,3,4] and Chris@37: compare ((list . ifftshift . fromList) [4,5,1,2,3]) [1,2,3,4,5] Chris@37: ), Chris@37: Chris@53: ] is hash boolean>; Chris@33: Chris@53: