fix incorrect folder name for julia-0.6.x
Former-commit-id: ef2c7401e0876f22d2f7762d182cfbcd5a7d9c70
This commit is contained in:
75
julia-0.6.3/share/julia/test/linalg/givens.jl
Normal file
75
julia-0.6.3/share/julia/test/linalg/givens.jl
Normal file
@@ -0,0 +1,75 @@
|
||||
# This file is a part of Julia. License is MIT: https://julialang.org/license
|
||||
|
||||
using Base.Test
|
||||
|
||||
let
|
||||
debug = false
|
||||
|
||||
# Test givens rotations
|
||||
for elty in (Float32, Float64, Complex64, Complex128)
|
||||
debug && println("elty is $elty")
|
||||
|
||||
if elty <: Real
|
||||
A = convert(Matrix{elty}, randn(10,10))
|
||||
else
|
||||
A = convert(Matrix{elty}, complex.(randn(10,10),randn(10,10)))
|
||||
end
|
||||
for Atype in ("Array", "SubArray")
|
||||
if Atype == "Array"
|
||||
A = A
|
||||
else
|
||||
A = view(A, 1:10, 1:10)
|
||||
end
|
||||
Ac = copy(A)
|
||||
R = Base.LinAlg.Rotation(Base.LinAlg.Givens{elty}[])
|
||||
for j = 1:8
|
||||
for i = j+2:10
|
||||
G, _ = givens(A, j+1, i, j)
|
||||
A_mul_B!(G, A)
|
||||
A_mul_Bc!(A, G)
|
||||
A_mul_B!(G, R)
|
||||
|
||||
@test A_mul_B!(G,eye(elty,10,10)) == [G[i,j] for i=1:10,j=1:10]
|
||||
|
||||
# test transposes
|
||||
@test ctranspose(G)*G*eye(10) ≈ eye(elty, 10)
|
||||
@test ctranspose(R)*(R*eye(10)) ≈ eye(elty, 10)
|
||||
@test_throws ErrorException transpose(G)
|
||||
@test_throws ErrorException transpose(R)
|
||||
end
|
||||
end
|
||||
@test_throws ArgumentError givens(A, 3, 3, 2)
|
||||
@test_throws ArgumentError givens(one(elty),zero(elty),2,2)
|
||||
G, _ = givens(one(elty),zero(elty),11,12)
|
||||
@test_throws DimensionMismatch A_mul_B!(G, A)
|
||||
@test_throws DimensionMismatch A_mul_Bc!(A,G)
|
||||
@test abs.(A) ≈ abs.(hessfact(Ac)[:H])
|
||||
@test norm(R*eye(elty, 10)) ≈ one(elty)
|
||||
|
||||
G, _ = givens(one(elty),zero(elty),9,10)
|
||||
@test ctranspose(G*eye(elty,10))*(G*eye(elty,10)) ≈ eye(elty, 10)
|
||||
K, _ = givens(zero(elty),one(elty),9,10)
|
||||
@test ctranspose(K*eye(elty,10))*(K*eye(elty,10)) ≈ eye(elty, 10)
|
||||
|
||||
# test that Givens * work for vectors
|
||||
if Atype == "Array"
|
||||
x = A[:, 1]
|
||||
else
|
||||
x = view(A, 1:10, 1)
|
||||
end
|
||||
G, r = givens(x[2], x[4], 2, 4)
|
||||
@test (G*x)[2] ≈ r
|
||||
@test abs((G*x)[4]) < eps(real(elty))
|
||||
@inferred givens(x[2], x[4], 2, 4)
|
||||
|
||||
G, r = givens(x, 2, 4)
|
||||
@test (G*x)[2] ≈ r
|
||||
@test abs((G*x)[4]) < eps(real(elty))
|
||||
@inferred givens(x, 2, 4)
|
||||
|
||||
G, r = givens(x, 4, 2)
|
||||
@test (G*x)[4] ≈ r
|
||||
@test abs((G*x)[2]) < eps(real(elty))
|
||||
end
|
||||
end
|
||||
end #let
|
||||
Reference in New Issue
Block a user