|
146 | 146 | end
|
147 | 147 | end
|
148 | 148 |
|
| 149 | + @testset "kaxes" begin |
| 150 | + # test kaxes |
| 151 | + A = rand(10, 5) |
| 152 | + @test kaxes(A, Vector{Float64}) == (10, 5) |
| 153 | + @test kaxes(A, SparseVector{Float64, Int64}) == (Base.OneTo(10), Base.OneTo(5)) |
| 154 | + end |
| 155 | + |
149 | 156 | @testset "vector_to_matrix" begin
|
150 | 157 | # test vector_to_matrix
|
151 | 158 | for FC in (Float32, Float64, ComplexF32, ComplexF64)
|
|
179 | 186 | a2 = rand(T)
|
180 | 187 | b2 = rand(T)
|
181 | 188 |
|
182 |
| - Krylov.@kdot(n, x, y) |
| 189 | + @test Krylov.@kdot(n, x, y) ≈ dot(x,y) |
| 190 | + |
| 191 | + @test Krylov.@kdotr(n, x, x) isa T |
| 192 | + |
| 193 | + @test Krylov.@knrm2(n, x) ≈ norm(x) |
183 | 194 |
|
184 |
| - Krylov.@kdotr(n, x, y) |
| 195 | + @test Krylov.@kaxpy!(n, a, copy(x), copy(y)) ≈ (a * x + y) |
| 196 | + @test Krylov.@kaxpy!(n, a2, copy(x), copy(y)) ≈ (a2 * x + y) |
185 | 197 |
|
186 |
| - Krylov.@knrm2(n, x) |
| 198 | + @test Krylov.@kaxpby!(n, a, copy(x), b, copy(y)) ≈ (a * x + b * y) |
| 199 | + @test Krylov.@kaxpby!(n, a2, copy(x), b, copy(y)) ≈ (a2 * x + b * y) |
| 200 | + @test Krylov.@kaxpby!(n, a, copy(x), b2, copy(y)) ≈ (a * x + b2 * y) |
| 201 | + @test Krylov.@kaxpby!(n, a2, copy(x), b2, copy(y)) ≈ (a2 * x + b2 * y) |
187 | 202 |
|
188 |
| - Krylov.@kaxpy!(n, a, x, y) |
189 |
| - Krylov.@kaxpy!(n, a2, x, y) |
| 203 | + xc = copy(x) |
| 204 | + yc = copy(y) |
| 205 | + Krylov.@kcopy!(n, xc, yc) |
| 206 | + @test yc ≈ x |
190 | 207 |
|
191 |
| - Krylov.@kaxpby!(n, a, x, b, y) |
192 |
| - Krylov.@kaxpby!(n, a2, x, b, y) |
193 |
| - Krylov.@kaxpby!(n, a, x, b2, y) |
194 |
| - Krylov.@kaxpby!(n, a2, x, b2, y) |
| 208 | + xc = copy(x) |
| 209 | + yc = copy(y) |
| 210 | + Krylov.@kswap(xc, yc) |
| 211 | + @test xc ≈ y |
| 212 | + @test yc ≈ x |
195 | 213 |
|
196 |
| - Krylov.@kcopy!(n, x, y) |
| 214 | + xc = copy(x) |
| 215 | + yc = copy(y) |
| 216 | + Krylov.@kref!(n, xc, yc, c, s) |
| 217 | + @test xc ≈ (c * x + s * y) |
| 218 | + @test yc ≈ (conj(s) * x - c * y) |
| 219 | + end |
| 220 | + end |
| 221 | + |
| 222 | + @testset "axpy! and axpby! with generic arrays" begin |
| 223 | + for FC ∈ (Float16, Float32, Float64, ComplexF16, ComplexF32, ComplexF64) |
| 224 | + n = 10 |
| 225 | + # S can't be a `SparseVector` but we can use this type to check |
| 226 | + # that axpy! and axpby! work when S is not a `DenseVector`. |
| 227 | + x = sprand(FC, n, 0.5) |
| 228 | + y = sprand(FC, n, 0.5) |
| 229 | + a = rand(FC) |
| 230 | + b = rand(FC) |
| 231 | + |
| 232 | + T = real(FC) |
| 233 | + a2 = rand(T) |
| 234 | + b2 = rand(T) |
197 | 235 |
|
198 |
| - Krylov.@kswap(x, y) |
| 236 | + @test Krylov.@kaxpy!(n, a, copy(x), copy(y)) ≈ (a * x + y) |
| 237 | + @test Krylov.@kaxpy!(n, a2, copy(x), copy(y)) ≈ (a2 * x + y) |
199 | 238 |
|
200 |
| - Krylov.@kref!(n, x, y, c, s) |
| 239 | + @test Krylov.@kaxpby!(n, a, copy(x), b, copy(y)) ≈ (a * x + b * y) |
| 240 | + @test Krylov.@kaxpby!(n, a2, copy(x), b, copy(y)) ≈ (a2 * x + b * y) |
| 241 | + @test Krylov.@kaxpby!(n, a, copy(x), b2, copy(y)) ≈ (a * x + b2 * y) |
| 242 | + @test Krylov.@kaxpby!(n, a2, copy(x), b2, copy(y)) ≈ (a2 * x + b2 * y) |
201 | 243 | end
|
202 | 244 | end
|
203 | 245 | end
|
0 commit comments