@@ -322,96 +322,107 @@ using FastTransforms, Test
322
322
end
323
323
324
324
@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 ))
385
414
end
386
415
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
407
424
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 ))
413
425
end
414
-
415
426
@testset " Integer" begin
416
427
@test chebyshevtransform ([1 ,2 ,3 ]) == chebyshevtransform ([1. ,2 ,3 ])
417
428
@test chebyshevtransform ([1 ,2 ,3 ], Val (2 )) == chebyshevtransform ([1. ,2 ,3 ], Val (2 ))
0 commit comments