@@ -5,38 +5,43 @@ using FastTransforms, BandedMatrices, LazyArrays, LinearAlgebra, Test
55 for T in (Float32, Float64, BigFloat)
66 R = plan_leg2cheb (T, n; normcheb= true )* I
77 X = Tridiagonal ([T (n)/ (2 n- 1 ) for n in 1 : n- 1 ], zeros (T, n), [T (n)/ (2 n+ 1 ) for n in 1 : n- 1 ]) # Legendre X
8- W = Symmetric (R' R)
9- G = GramMatrix (W, X)
10- F = cholesky (G)
11- @test F. L* F. L' ≈ W
8+ W = GramMatrix (Symmetric (R' R), X)
9+ F = cholesky (W)
10+ @test F. L* F. L' ≈ Symmetric (R' R)
1211 @test F. U ≈ R
1312
1413 R = plan_leg2cheb (T, n; normcheb= true , normleg= true )* I
1514 X = SymTridiagonal (zeros (T, n), [sqrt (T (n)^ 2 / (4 * n^ 2 - 1 )) for n in 1 : n- 1 ]) # normalized Legendre X
16- W = Symmetric (R' R)
17- G = GramMatrix (W, X)
18- F = cholesky (G)
19- @test F. L* F. L' ≈ W
15+ W = GramMatrix (Symmetric (R' R), X)
16+ F = cholesky (W)
17+ @test F. L* F. L' ≈ Symmetric (R' R)
2018 @test F. U ≈ R
2119
2220 b = 4
2321 X = BandedMatrix (SymTridiagonal (zeros (T, n+ b), [sqrt (T (n)^ 2 / (4 * n^ 2 - 1 )) for n in 1 : n+ b- 1 ])) # normalized Legendre X
24- W = I+ X^ 2 + X^ 4
25- W = Symmetric (W[1 : n, 1 : n])
26- X = BandedMatrix (SymTridiagonal (zeros (T, n), [sqrt (T (n)^ 2 / (4 * n^ 2 - 1 )) for n in 1 : n- 1 ])) # normalized Legendre X
27- G = GramMatrix (W, X)
28- @test bandwidths (G) == (b, b)
29- F = cholesky (G)
30- @test F. L* F. L' ≈ W
22+ M = Symmetric ((I+ X^ 2 + X^ 4 )[1 : n, 1 : n])
23+ W = GramMatrix (M, X[1 : n, 1 : n])
24+ @test bandwidths (W) == (b, b)
25+ F = cholesky (W)
26+ @test F. L* F. L' ≈ M
3127
3228 X = BandedMatrix (SymTridiagonal (T[2 n- 1 for n in 1 : n+ b], T[- n for n in 1 : n+ b- 1 ])) # Laguerre X, tests nonzero diagonal
33- W = I+ X^ 2 + X^ 4
34- W = Symmetric (W[1 : n, 1 : n])
35- X = BandedMatrix (SymTridiagonal (T[2 n- 1 for n in 1 : n], T[- n for n in 1 : n- 1 ])) # Laguerre X
36- G = GramMatrix (W, X)
37- @test bandwidths (G) == (b, b)
38- F = cholesky (G)
39- @test F. L* F. L' ≈ W
29+ M = Symmetric ((I+ X^ 2 + X^ 4 )[1 : n, 1 : n])
30+ W = GramMatrix (M, X[1 : n, 1 : n])
31+ @test bandwidths (W) == (b, b)
32+ F = cholesky (W)
33+ @test F. L* F. L' ≈ M
34+
35+ for μ in (PaddedVector ([T (4 )/ 3 ;0 ;- T (4 )/ 15 ], 2 n- 1 ), # w(x) = 1-x^2
36+ PaddedVector ([T (26 )/ 15 ;0 ;- T (4 )/ 105 ;0 ;T (16 )/ 315 ], 2 n- 1 ), # w(x) = 1-x^2+x^4
37+ T (1 ) ./ (1 : 2 n- 1 )) # Related to a log weight
38+ X = Tridiagonal ([T (n)/ (2 n- 1 ) for n in 1 : 2 n- 2 ], zeros (T, 2 n- 1 ), [T (n)/ (2 n+ 1 ) for n in 1 : 2 n- 2 ]) # Legendre X
39+ W = GramMatrix (μ, X)
40+ X = Tridiagonal (X[1 : n, 1 : n])
41+ G = FastTransforms. compute_skew_generators (W)
42+ J = T[0 1 ; - 1 0 ]
43+ @test X' W- W* X ≈ G* J* G'
44+ end
4045 end
4146 W = reshape ([i for i in 1.0 : n^ 2 ], n, n)
4247 X = reshape ([i for i in 1.0 : 4 n^ 2 ], 2 n, 2 n)
5055 n = 128
5156 for T in (Float32, Float64, BigFloat)
5257 μ = FastTransforms. chebyshevmoments1 (T, 2 n- 1 )
53- G = ChebyshevGramMatrix (μ)
54- F = cholesky (G )
55- @test F. L* F. L' ≈ G
58+ W = ChebyshevGramMatrix (μ)
59+ F = cholesky (W )
60+ @test F. L* F. L' ≈ W
5661 R = plan_cheb2leg (T, n; normleg= true )* I
5762 @test F. U ≈ R
5863
5964 α, β = (T (0.123 ), T (0.456 ))
6065 μ = FastTransforms. chebyshevjacobimoments1 (T, 2 n- 1 , α, β)
61- G = ChebyshevGramMatrix (μ)
62- F = cholesky (G )
63- @test F. L* F. L' ≈ G
66+ W = ChebyshevGramMatrix (μ)
67+ F = cholesky (W )
68+ @test F. L* F. L' ≈ W
6469 R = plan_cheb2jac (T, n, α, β; normjac= true )* I
6570 @test F. U ≈ R
6671
6772 μ = FastTransforms. chebyshevlogmoments1 (T, 2 n- 1 )
68- G = ChebyshevGramMatrix (μ)
69- F = cholesky (G )
70- @test F. L* F. L' ≈ G
73+ W = ChebyshevGramMatrix (μ)
74+ F = cholesky (W )
75+ @test F. L* F. L' ≈ W
7176
7277 μ = FastTransforms. chebyshevabsmoments1 (T, 2 n- 1 )
73- G = ChebyshevGramMatrix (μ)
74- F = cholesky (G )
75- @test F. L* F. L' ≈ G
78+ W = ChebyshevGramMatrix (μ)
79+ F = cholesky (W )
80+ @test F. L* F. L' ≈ W
7681
7782 μ = PaddedVector (T (1 ) ./ [1 ,2 ,3 ,4 ,5 ], 2 n- 1 )
78- G = ChebyshevGramMatrix (μ)
79- @test bandwidths (G ) == (4 , 4 )
80- F = cholesky (G )
81- @test F. L* F. L' ≈ G
83+ W = ChebyshevGramMatrix (μ)
84+ @test bandwidths (W ) == (4 , 4 )
85+ F = cholesky (W )
86+ @test F. L* F. L' ≈ W
8287 μd = Vector {T} (μ)
83- Gd = ChebyshevGramMatrix (μd)
84- Fd = cholesky (Gd )
88+ Wd = ChebyshevGramMatrix (μd)
89+ Fd = cholesky (Wd )
8590 @test F. L ≈ Fd. L
91+
92+ X = Tridiagonal ([T (1 ); ones (T, n- 2 )/ 2 ], zeros (T, n), ones (T, n- 1 )/ 2 )
93+ G = FastTransforms. compute_skew_generators (W)
94+ J = T[0 1 ; - 1 0 ]
95+ @test 2 * (X' W- W* X) ≈ G* J* G'
8696 end
8797end
0 commit comments