@@ -322,96 +322,107 @@ using FastTransforms, Test
322322 end
323323
324324 @testset " tensor" begin
325- X = randn (4 ,5 ,6 )
326- X̃ = similar (X)
327- @testset " chebyshevtransform" begin
328- for k = axes (X,2 ), j = axes (X,3 ) X̃[:,k,j] = chebyshevtransform (X[:,k,j]) end
329- @test @inferred (chebyshevtransform (X,1 )) ≈ @inferred (chebyshevtransform! (copy (X),1 )) ≈ X̃
330- for k = axes (X,1 ), j = axes (X,3 ) X̃[k,:,j] = chebyshevtransform (X[k,:,j]) end
331- @test chebyshevtransform (X,2 ) ≈ chebyshevtransform! (copy (X),2 ) ≈ X̃
332- for k = axes (X,1 ), j = axes (X,2 ) X̃[k,j,:] = chebyshevtransform (X[k,j,:]) end
333- @test chebyshevtransform (X,3 ) ≈ chebyshevtransform! (copy (X),3 ) ≈ X̃
334-
335- for k = axes (X,2 ), j = axes (X,3 ) X̃[:,k,j] = chebyshevtransform (X[:,k,j],Val (2 )) end
336- @test @inferred (chebyshevtransform (X,Val (2 ),1 )) ≈ @inferred (chebyshevtransform! (copy (X),Val (2 ),1 )) ≈ X̃
337- for k = axes (X,1 ), j = axes (X,3 ) X̃[k,:,j] = chebyshevtransform (X[k,:,j],Val (2 )) end
338- @test chebyshevtransform (X,Val (2 ),2 ) ≈ chebyshevtransform! (copy (X),Val (2 ),2 ) ≈ X̃
339- for k = axes (X,1 ), j = axes (X,2 ) X̃[k,j,:] = chebyshevtransform (X[k,j,:],Val (2 )) end
340- @test chebyshevtransform (X,Val (2 ),3 ) ≈ chebyshevtransform! (copy (X),Val (2 ),3 ) ≈ X̃
341-
342- @test @inferred (chebyshevtransform (X)) ≈ @inferred (chebyshevtransform! (copy (X))) ≈ chebyshevtransform (chebyshevtransform (chebyshevtransform (X,1 ),2 ),3 )
343- @test @inferred (chebyshevtransform (X,Val (2 ))) ≈ @inferred (chebyshevtransform! (copy (X),Val (2 ))) ≈ chebyshevtransform (chebyshevtransform (chebyshevtransform (X,Val (2 ),1 ),Val (2 ),2 ),Val (2 ),3 )
344- end
345-
346- @testset " ichebyshevtransform" begin
347- for k = axes (X,2 ), j = axes (X,3 ) X̃[:,k,j] = ichebyshevtransform (X[:,k,j]) end
348- @test @inferred (ichebyshevtransform (X,1 )) ≈ @inferred (ichebyshevtransform! (copy (X),1 )) ≈ X̃
349- for k = axes (X,1 ), j = axes (X,3 ) X̃[k,:,j] = ichebyshevtransform (X[k,:,j]) end
350- @test ichebyshevtransform (X,2 ) ≈ ichebyshevtransform! (copy (X),2 ) ≈ X̃
351- for k = axes (X,1 ), j = axes (X,2 ) X̃[k,j,:] = ichebyshevtransform (X[k,j,:]) end
352- @test ichebyshevtransform (X,3 ) ≈ ichebyshevtransform! (copy (X),3 ) ≈ X̃
353-
354- for k = axes (X,2 ), j = axes (X,3 ) X̃[:,k,j] = ichebyshevtransform (X[:,k,j],Val (2 )) end
355- @test @inferred (ichebyshevtransform (X,Val (2 ),1 )) ≈ @inferred (ichebyshevtransform! (copy (X),Val (2 ),1 )) ≈ X̃
356- for k = axes (X,1 ), j = axes (X,3 ) X̃[k,:,j] = ichebyshevtransform (X[k,:,j],Val (2 )) end
357- @test ichebyshevtransform (X,Val (2 ),2 ) ≈ ichebyshevtransform! (copy (X),Val (2 ),2 ) ≈ X̃
358- for k = axes (X,1 ), j = axes (X,2 ) X̃[k,j,:] = ichebyshevtransform (X[k,j,:],Val (2 )) end
359- @test ichebyshevtransform (X,Val (2 ),3 ) ≈ ichebyshevtransform! (copy (X),Val (2 ),3 ) ≈ X̃
360-
361- @test @inferred (ichebyshevtransform (X)) ≈ @inferred (ichebyshevtransform! (copy (X))) ≈ ichebyshevtransform (ichebyshevtransform (ichebyshevtransform (X,1 ),2 ),3 )
362- @test @inferred (ichebyshevtransform (X,Val (2 ))) ≈ @inferred (ichebyshevtransform! (copy (X),Val (2 ))) ≈ ichebyshevtransform (ichebyshevtransform (ichebyshevtransform (X,Val (2 ),1 ),Val (2 ),2 ),Val (2 ),3 )
363-
364- @test ichebyshevtransform (chebyshevtransform (X)) ≈ X
365- @test chebyshevtransform (ichebyshevtransform (X)) ≈ X
366- end
367-
368- @testset " chebyshevutransform" begin
369- for k = axes (X,2 ), j = axes (X,3 ) X̃[:,k,j] = chebyshevutransform (X[:,k,j]) end
370- @test @inferred (chebyshevutransform (X,1 )) ≈ @inferred (chebyshevutransform! (copy (X),1 )) ≈ X̃
371- for k = axes (X,1 ), j = axes (X,3 ) X̃[k,:,j] = chebyshevutransform (X[k,:,j]) end
372- @test chebyshevutransform (X,2 ) ≈ chebyshevutransform! (copy (X),2 ) ≈ X̃
373- for k = axes (X,1 ), j = axes (X,2 ) X̃[k,j,:] = chebyshevutransform (X[k,j,:]) end
374- @test chebyshevutransform (X,3 ) ≈ chebyshevutransform! (copy (X),3 ) ≈ X̃
375-
376- for k = axes (X,2 ), j = axes (X,3 ) X̃[:,k,j] = chebyshevutransform (X[:,k,j],Val (2 )) end
377- @test @inferred (chebyshevutransform (X,Val (2 ),1 )) ≈ @inferred (chebyshevutransform! (copy (X),Val (2 ),1 )) ≈ X̃
378- for k = axes (X,1 ), j = axes (X,3 ) X̃[k,:,j] = chebyshevutransform (X[k,:,j],Val (2 )) end
379- @test chebyshevutransform (X,Val (2 ),2 ) ≈ chebyshevutransform! (copy (X),Val (2 ),2 ) ≈ X̃
380- for k = axes (X,1 ), j = axes (X,2 ) X̃[k,j,:] = chebyshevutransform (X[k,j,:],Val (2 )) end
381- @test chebyshevutransform (X,Val (2 ),3 ) ≈ chebyshevutransform! (copy (X),Val (2 ),3 ) ≈ X̃
382-
383- @test @inferred (chebyshevutransform (X)) ≈ @inferred (chebyshevutransform! (copy (X))) ≈ chebyshevutransform (chebyshevutransform (chebyshevutransform (X,1 ),2 ),3 )
384- @test @inferred (chebyshevutransform (X,Val (2 ))) ≈ @inferred (chebyshevutransform! (copy (X),Val (2 ))) ≈ chebyshevutransform (chebyshevutransform (chebyshevutransform (X,Val (2 ),1 ),Val (2 ),2 ),Val (2 ),3 )
325+ @testset " 3D" begin
326+ X = randn (4 ,5 ,6 )
327+ X̃ = similar (X)
328+ @testset " chebyshevtransform" begin
329+ for k = axes (X,2 ), j = axes (X,3 ) X̃[:,k,j] = chebyshevtransform (X[:,k,j]) end
330+ @test @inferred (chebyshevtransform (X,1 )) ≈ @inferred (chebyshevtransform! (copy (X),1 )) ≈ X̃
331+ for k = axes (X,1 ), j = axes (X,3 ) X̃[k,:,j] = chebyshevtransform (X[k,:,j]) end
332+ @test chebyshevtransform (X,2 ) ≈ chebyshevtransform! (copy (X),2 ) ≈ X̃
333+ for k = axes (X,1 ), j = axes (X,2 ) X̃[k,j,:] = chebyshevtransform (X[k,j,:]) end
334+ @test chebyshevtransform (X,3 ) ≈ chebyshevtransform! (copy (X),3 ) ≈ X̃
335+
336+ for k = axes (X,2 ), j = axes (X,3 ) X̃[:,k,j] = chebyshevtransform (X[:,k,j],Val (2 )) end
337+ @test @inferred (chebyshevtransform (X,Val (2 ),1 )) ≈ @inferred (chebyshevtransform! (copy (X),Val (2 ),1 )) ≈ X̃
338+ for k = axes (X,1 ), j = axes (X,3 ) X̃[k,:,j] = chebyshevtransform (X[k,:,j],Val (2 )) end
339+ @test chebyshevtransform (X,Val (2 ),2 ) ≈ chebyshevtransform! (copy (X),Val (2 ),2 ) ≈ X̃
340+ for k = axes (X,1 ), j = axes (X,2 ) X̃[k,j,:] = chebyshevtransform (X[k,j,:],Val (2 )) end
341+ @test chebyshevtransform (X,Val (2 ),3 ) ≈ chebyshevtransform! (copy (X),Val (2 ),3 ) ≈ X̃
342+
343+ @test @inferred (chebyshevtransform (X)) ≈ @inferred (chebyshevtransform! (copy (X))) ≈ chebyshevtransform (chebyshevtransform (chebyshevtransform (X,1 ),2 ),3 )
344+ @test @inferred (chebyshevtransform (X,Val (2 ))) ≈ @inferred (chebyshevtransform! (copy (X),Val (2 ))) ≈ chebyshevtransform (chebyshevtransform (chebyshevtransform (X,Val (2 ),1 ),Val (2 ),2 ),Val (2 ),3 )
345+ end
346+
347+ @testset " ichebyshevtransform" begin
348+ for k = axes (X,2 ), j = axes (X,3 ) X̃[:,k,j] = ichebyshevtransform (X[:,k,j]) end
349+ @test @inferred (ichebyshevtransform (X,1 )) ≈ @inferred (ichebyshevtransform! (copy (X),1 )) ≈ X̃
350+ for k = axes (X,1 ), j = axes (X,3 ) X̃[k,:,j] = ichebyshevtransform (X[k,:,j]) end
351+ @test ichebyshevtransform (X,2 ) ≈ ichebyshevtransform! (copy (X),2 ) ≈ X̃
352+ for k = axes (X,1 ), j = axes (X,2 ) X̃[k,j,:] = ichebyshevtransform (X[k,j,:]) end
353+ @test ichebyshevtransform (X,3 ) ≈ ichebyshevtransform! (copy (X),3 ) ≈ X̃
354+
355+ for k = axes (X,2 ), j = axes (X,3 ) X̃[:,k,j] = ichebyshevtransform (X[:,k,j],Val (2 )) end
356+ @test @inferred (ichebyshevtransform (X,Val (2 ),1 )) ≈ @inferred (ichebyshevtransform! (copy (X),Val (2 ),1 )) ≈ X̃
357+ for k = axes (X,1 ), j = axes (X,3 ) X̃[k,:,j] = ichebyshevtransform (X[k,:,j],Val (2 )) end
358+ @test ichebyshevtransform (X,Val (2 ),2 ) ≈ ichebyshevtransform! (copy (X),Val (2 ),2 ) ≈ X̃
359+ for k = axes (X,1 ), j = axes (X,2 ) X̃[k,j,:] = ichebyshevtransform (X[k,j,:],Val (2 )) end
360+ @test ichebyshevtransform (X,Val (2 ),3 ) ≈ ichebyshevtransform! (copy (X),Val (2 ),3 ) ≈ X̃
361+
362+ @test @inferred (ichebyshevtransform (X)) ≈ @inferred (ichebyshevtransform! (copy (X))) ≈ ichebyshevtransform (ichebyshevtransform (ichebyshevtransform (X,1 ),2 ),3 )
363+ @test @inferred (ichebyshevtransform (X,Val (2 ))) ≈ @inferred (ichebyshevtransform! (copy (X),Val (2 ))) ≈ ichebyshevtransform (ichebyshevtransform (ichebyshevtransform (X,Val (2 ),1 ),Val (2 ),2 ),Val (2 ),3 )
364+
365+ @test ichebyshevtransform (chebyshevtransform (X)) ≈ X
366+ @test chebyshevtransform (ichebyshevtransform (X)) ≈ X
367+ end
368+
369+ @testset " chebyshevutransform" begin
370+ for k = axes (X,2 ), j = axes (X,3 ) X̃[:,k,j] = chebyshevutransform (X[:,k,j]) end
371+ @test @inferred (chebyshevutransform (X,1 )) ≈ @inferred (chebyshevutransform! (copy (X),1 )) ≈ X̃
372+ for k = axes (X,1 ), j = axes (X,3 ) X̃[k,:,j] = chebyshevutransform (X[k,:,j]) end
373+ @test chebyshevutransform (X,2 ) ≈ chebyshevutransform! (copy (X),2 ) ≈ X̃
374+ for k = axes (X,1 ), j = axes (X,2 ) X̃[k,j,:] = chebyshevutransform (X[k,j,:]) end
375+ @test chebyshevutransform (X,3 ) ≈ chebyshevutransform! (copy (X),3 ) ≈ X̃
376+
377+ for k = axes (X,2 ), j = axes (X,3 ) X̃[:,k,j] = chebyshevutransform (X[:,k,j],Val (2 )) end
378+ @test @inferred (chebyshevutransform (X,Val (2 ),1 )) ≈ @inferred (chebyshevutransform! (copy (X),Val (2 ),1 )) ≈ X̃
379+ for k = axes (X,1 ), j = axes (X,3 ) X̃[k,:,j] = chebyshevutransform (X[k,:,j],Val (2 )) end
380+ @test chebyshevutransform (X,Val (2 ),2 ) ≈ chebyshevutransform! (copy (X),Val (2 ),2 ) ≈ X̃
381+ for k = axes (X,1 ), j = axes (X,2 ) X̃[k,j,:] = chebyshevutransform (X[k,j,:],Val (2 )) end
382+ @test chebyshevutransform (X,Val (2 ),3 ) ≈ chebyshevutransform! (copy (X),Val (2 ),3 ) ≈ X̃
383+
384+ @test @inferred (chebyshevutransform (X)) ≈ @inferred (chebyshevutransform! (copy (X))) ≈ chebyshevutransform (chebyshevutransform (chebyshevutransform (X,1 ),2 ),3 )
385+ @test @inferred (chebyshevutransform (X,Val (2 ))) ≈ @inferred (chebyshevutransform! (copy (X),Val (2 ))) ≈ chebyshevutransform (chebyshevutransform (chebyshevutransform (X,Val (2 ),1 ),Val (2 ),2 ),Val (2 ),3 )
386+ end
387+
388+ @testset " ichebyshevutransform" begin
389+ for k = axes (X,2 ), j = axes (X,3 ) X̃[:,k,j] = ichebyshevutransform (X[:,k,j]) end
390+ @test @inferred (ichebyshevutransform (X,1 )) ≈ @inferred (ichebyshevutransform! (copy (X),1 )) ≈ X̃
391+ for k = axes (X,1 ), j = axes (X,3 ) X̃[k,:,j] = ichebyshevutransform (X[k,:,j]) end
392+ @test ichebyshevutransform (X,2 ) ≈ ichebyshevutransform! (copy (X),2 ) ≈ X̃
393+ for k = axes (X,1 ), j = axes (X,2 ) X̃[k,j,:] = ichebyshevutransform (X[k,j,:]) end
394+ @test ichebyshevutransform (X,3 ) ≈ ichebyshevutransform! (copy (X),3 ) ≈ X̃
395+
396+ for k = axes (X,2 ), j = axes (X,3 ) X̃[:,k,j] = ichebyshevutransform (X[:,k,j],Val (2 )) end
397+ @test @inferred (ichebyshevutransform (X,Val (2 ),1 )) ≈ @inferred (ichebyshevutransform! (copy (X),Val (2 ),1 )) ≈ X̃
398+ for k = axes (X,1 ), j = axes (X,3 ) X̃[k,:,j] = ichebyshevutransform (X[k,:,j],Val (2 )) end
399+ @test ichebyshevutransform (X,Val (2 ),2 ) ≈ ichebyshevutransform! (copy (X),Val (2 ),2 ) ≈ X̃
400+ for k = axes (X,1 ), j = axes (X,2 ) X̃[k,j,:] = ichebyshevutransform (X[k,j,:],Val (2 )) end
401+ @test ichebyshevutransform (X,Val (2 ),3 ) ≈ ichebyshevutransform! (copy (X),Val (2 ),3 ) ≈ X̃
402+
403+ @test @inferred (ichebyshevutransform (X)) ≈ @inferred (ichebyshevutransform! (copy (X))) ≈ ichebyshevutransform (ichebyshevutransform (ichebyshevutransform (X,1 ),2 ),3 )
404+ @test @inferred (ichebyshevutransform (X,Val (2 ))) ≈ @inferred (ichebyshevutransform! (copy (X),Val (2 ))) ≈ ichebyshevutransform (ichebyshevutransform (ichebyshevutransform (X,Val (2 ),1 ),Val (2 ),2 ),Val (2 ),3 )
405+
406+ @test ichebyshevutransform (chebyshevutransform (X)) ≈ X
407+ @test chebyshevutransform (ichebyshevutransform (X)) ≈ X
408+ end
409+
410+ X = randn (1 ,1 ,1 )
411+ @test chebyshevtransform! (copy (X), Val (1 )) == ichebyshevtransform! (copy (X), Val (1 )) == X
412+ @test_throws ArgumentError chebyshevtransform! (copy (X), Val (2 ))
413+ @test_throws ArgumentError ichebyshevtransform! (copy (X), Val (2 ))
385414 end
386415
387- @testset " ichebyshevutransform" begin
388- for k = axes (X,2 ), j = axes (X,3 ) X̃[:,k,j] = ichebyshevutransform (X[:,k,j]) end
389- @test @inferred (ichebyshevutransform (X,1 )) ≈ @inferred (ichebyshevutransform! (copy (X),1 )) ≈ X̃
390- for k = axes (X,1 ), j = axes (X,3 ) X̃[k,:,j] = ichebyshevutransform (X[k,:,j]) end
391- @test ichebyshevutransform (X,2 ) ≈ ichebyshevutransform! (copy (X),2 ) ≈ X̃
392- for k = axes (X,1 ), j = axes (X,2 ) X̃[k,j,:] = ichebyshevutransform (X[k,j,:]) end
393- @test ichebyshevutransform (X,3 ) ≈ ichebyshevutransform! (copy (X),3 ) ≈ X̃
394-
395- for k = axes (X,2 ), j = axes (X,3 ) X̃[:,k,j] = ichebyshevutransform (X[:,k,j],Val (2 )) end
396- @test @inferred (ichebyshevutransform (X,Val (2 ),1 )) ≈ @inferred (ichebyshevutransform! (copy (X),Val (2 ),1 )) ≈ X̃
397- for k = axes (X,1 ), j = axes (X,3 ) X̃[k,:,j] = ichebyshevutransform (X[k,:,j],Val (2 )) end
398- @test ichebyshevutransform (X,Val (2 ),2 ) ≈ ichebyshevutransform! (copy (X),Val (2 ),2 ) ≈ X̃
399- for k = axes (X,1 ), j = axes (X,2 ) X̃[k,j,:] = ichebyshevutransform (X[k,j,:],Val (2 )) end
400- @test ichebyshevutransform (X,Val (2 ),3 ) ≈ ichebyshevutransform! (copy (X),Val (2 ),3 ) ≈ X̃
401-
402- @test @inferred (ichebyshevutransform (X)) ≈ @inferred (ichebyshevutransform! (copy (X))) ≈ ichebyshevutransform (ichebyshevutransform (ichebyshevutransform (X,1 ),2 ),3 )
403- @test @inferred (ichebyshevutransform (X,Val (2 ))) ≈ @inferred (ichebyshevutransform! (copy (X),Val (2 ))) ≈ ichebyshevutransform (ichebyshevutransform (ichebyshevutransform (X,Val (2 ),1 ),Val (2 ),2 ),Val (2 ),3 )
404-
405- @test ichebyshevutransform (chebyshevutransform (X)) ≈ X
406- @test chebyshevutransform (ichebyshevutransform (X)) ≈ X
416+ @testset " 4D" begin
417+ X = randn (2 ,3 ,4 ,5 )
418+ X̃ = similar (X)
419+ for trans in (chebyshevtransform, ichebyshevtransform, chebyshevutransform, ichebyshevutransform)
420+ for k = axes (X,2 ), j = axes (X,3 ), l = axes (X,4 ) X̃[:,k,j,l] = trans (X[:,k,j,l]) end
421+ @test @inferred (trans (X,1 )) ≈ X̃
422+ @test @inferred (trans (X)) ≈ trans (trans (trans (trans (X,1 ),2 ),3 ),4 )
423+ end
407424 end
408-
409- X = randn (1 ,1 ,1 )
410- @test chebyshevtransform! (copy (X), Val (1 )) == ichebyshevtransform! (copy (X), Val (1 )) == X
411- @test_throws ArgumentError chebyshevtransform! (copy (X), Val (2 ))
412- @test_throws ArgumentError ichebyshevtransform! (copy (X), Val (2 ))
413425 end
414-
415426 @testset " Integer" begin
416427 @test chebyshevtransform ([1 ,2 ,3 ]) == chebyshevtransform ([1. ,2 ,3 ])
417428 @test chebyshevtransform ([1 ,2 ,3 ], Val (2 )) == chebyshevtransform ([1. ,2 ,3 ], Val (2 ))
0 commit comments