@@ -5,38 +5,43 @@ using FastTransforms, BandedMatrices, LazyArrays, LinearAlgebra, Test
5
5
for T in (Float32, Float64, BigFloat)
6
6
R = plan_leg2cheb (T, n; normcheb= true )* I
7
7
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)
12
11
@test F. U ≈ R
13
12
14
13
R = plan_leg2cheb (T, n; normcheb= true , normleg= true )* I
15
14
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)
20
18
@test F. U ≈ R
21
19
22
20
b = 4
23
21
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
31
27
32
28
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
40
45
end
41
46
W = reshape ([i for i in 1.0 : n^ 2 ], n, n)
42
47
X = reshape ([i for i in 1.0 : 4 n^ 2 ], 2 n, 2 n)
50
55
n = 128
51
56
for T in (Float32, Float64, BigFloat)
52
57
μ = 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
56
61
R = plan_cheb2leg (T, n; normleg= true )* I
57
62
@test F. U ≈ R
58
63
59
64
α, β = (T (0.123 ), T (0.456 ))
60
65
μ = 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
64
69
R = plan_cheb2jac (T, n, α, β; normjac= true )* I
65
70
@test F. U ≈ R
66
71
67
72
μ = 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
71
76
72
77
μ = 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
76
81
77
82
μ = 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
82
87
μd = Vector {T} (μ)
83
- Gd = ChebyshevGramMatrix (μd)
84
- Fd = cholesky (Gd )
88
+ Wd = ChebyshevGramMatrix (μd)
89
+ Fd = cholesky (Wd )
85
90
@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'
86
96
end
87
97
end
0 commit comments