Skip to content

Commit 66211ed

Browse files
author
Andy Ferris
committed
Fix Random breakage and deprecations for v0.7
1 parent 8c69b34 commit 66211ed

File tree

4 files changed

+33
-22
lines changed

4 files changed

+33
-22
lines changed

src/StaticArrays.jl

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,21 @@ module StaticArrays
44

55
import Base: @_inline_meta, @_propagate_inbounds_meta, @_pure_meta, @propagate_inbounds, @pure
66

7-
import Base: getindex, setindex!, size, similar, vec, show,
8-
length, convert, promote_op, promote_rule, map, map!, reduce, reducedim, mapreducedim,
9-
mapreduce, broadcast, broadcast!, conj, transpose,
10-
hcat, vcat, ones, zeros, eye, one, cross, vecdot, reshape, fill,
11-
fill!, det, logdet, inv, eig, eigvals, eigfact, expm, logm, sqrtm, lyap, trace, kron, diag, vecnorm, norm, dot, diagm, diag,
12-
lu, svd, svdvals, svdfact, factorize, ishermitian, issymmetric, isposdef,
13-
iszero, sum, diff, prod, count, any, all, minimum,
14-
maximum, extrema, mean, copy, rand, randn, randexp, rand!, randn!,
15-
randexp!, normalize, normalize!, read, read!, write, Eigen
7+
import Base: getindex, setindex!, size, similar, vec, show, length, convert, promote_op,
8+
promote_rule, map, map!, reduce, reducedim, mapreducedim, mapreduce, broadcast,
9+
broadcast!, conj, transpose, hcat, vcat, ones, zeros, eye, one, cross, vecdot,
10+
reshape, fill, fill!, det, logdet, inv, eig, eigvals, eigfact, expm, logm,
11+
sqrtm, lyap, trace, kron, diag, vecnorm, norm, dot, diagm, diag, lu, svd,
12+
svdvals, svdfact, factorize, ishermitian, issymmetric, isposdef, iszero, sum,
13+
diff, prod, count, any, all, minimum, maximum, extrema, mean, copy, normalize,
14+
normalize!, read, read!, write, Eigen
15+
16+
if VERSION < v"0.7-"
17+
import Base: rand, randn, randexp, rand!, randn!, randexp!
18+
else
19+
using Random
20+
import Random: rand, randn, randexp, rand!, randn!, randexp!
21+
end
1622

1723
import Compat.adjoint
1824

src/abstractarray.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ end
1111

1212
# This seems to confuse Julia a bit in certain circumstances (specifically for trailing 1's)
1313
@inline function Base.isassigned(a::StaticArray, i::Int...)
14-
ii = sub2ind(size(a), i...)
14+
ii = LinearIndices(size(a))[i...]
1515
1 <= ii <= length(a) ? true : false
1616
end
1717

src/triangular.jl

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import Base: \, Ac_ldiv_B, At_ldiv_B
1616
@inline *(rowvec::RowVector{<:Any,<:StaticVector}, A::Base.LinAlg.AbstractTriangular{<:Any,<:StaticMatrix}) = transpose(A * transpose(rowvec))
1717
@inline A_mul_Bt(rowvec::RowVector{<:Any,<:StaticVector}, A::Base.LinAlg.AbstractTriangular{<:Any,<:StaticMatrix}) = transpose(A * transpose(rowvec))
1818
@inline A_mul_Bt(A::Base.LinAlg.AbstractTriangular{<:Any,<:StaticMatrix}, rowvec::RowVector{<:Any,<:StaticVector}) = A * transpose(rowvec)
19-
@inline At_mul_Bt(A::Base.LinAlg.AbstractTriangular{<:Any,<:StaticMatrix}, rowvec::RowVector{<:Any,<:StaticVector}) = A.' * transpose(rowvec)
19+
@inline At_mul_Bt(A::Base.LinAlg.AbstractTriangular{<:Any,<:StaticMatrix}, rowvec::RowVector{<:Any,<:StaticVector}) = transpose(A) * transpose(rowvec)
2020
@inline A_mul_Bc(rowvec::RowVector{<:Any,<:StaticVector}, A::Base.LinAlg.AbstractTriangular{<:Any,<:StaticMatrix}) = adjoint(A * adjoint(rowvec))
2121
@inline A_mul_Bc(A::Base.LinAlg.AbstractTriangular{<:Any,<:StaticMatrix}, rowvec::RowVector{<:Any,<:StaticVector}) = A * adjoint(rowvec)
2222
@inline Ac_mul_Bc(A::Base.LinAlg.AbstractTriangular{<:Any,<:StaticMatrix}, rowvec::RowVector{<:Any,<:StaticVector}) = A' * adjoint(rowvec)
@@ -27,8 +27,8 @@ A_mul_Bc(A::Base.LinAlg.AbstractTriangular{<:Any,<:StaticMatrix}, B::StaticMatri
2727
A_mul_Bt(A::Base.LinAlg.AbstractTriangular{<:Any,<:StaticMatrix}, B::StaticMatrix) = (*)(A, transpose(B))
2828
Ac_mul_Bc(A::Base.LinAlg.AbstractTriangular{<:Any,<:StaticMatrix}, B::StaticMatrix) = Ac_mul_B(A, B')
2929
Ac_mul_Bc(A::StaticMatrix, B::Base.LinAlg.AbstractTriangular{<:Any,<:StaticMatrix}) = A_mul_Bc(A', B)
30-
At_mul_Bt(A::Base.LinAlg.AbstractTriangular{<:Any,<:StaticMatrix}, B::StaticMatrix) = At_mul_B(A, B.')
31-
At_mul_Bt(A::StaticMatrix, B::Base.LinAlg.AbstractTriangular{<:Any,<:StaticMatrix}) = A_mul_Bt(A.', B)
30+
At_mul_Bt(A::Base.LinAlg.AbstractTriangular{<:Any,<:StaticMatrix}, B::StaticMatrix) = At_mul_B(A, transpose(B))
31+
At_mul_Bt(A::StaticMatrix, B::Base.LinAlg.AbstractTriangular{<:Any,<:StaticMatrix}) = A_mul_Bt(transpose(A), B)
3232

3333
@inline \(A::Union{UpperTriangular{<:Any,<:StaticMatrix},LowerTriangular{<:Any,<:StaticMatrix}}, B::StaticVecOrMat) = _A_ldiv_B(Size(A), Size(B), A, B)
3434
@inline Ac_ldiv_B(A::Union{UpperTriangular{<:Any,<:StaticMatrix},LowerTriangular{<:Any,<:StaticMatrix}}, B::StaticVecOrMat) = _Ac_ldiv_B(Size(A), Size(B), A, B)
@@ -102,9 +102,9 @@ end
102102
code = quote end
103103
for j = 1:n
104104
for i = m:-1:1
105-
ex = :(A.data[$(sub2ind(sa,i,i))].'*B[$(sub2ind(sb,i,j))])
105+
ex = :(transpose(A.data[$(sub2ind(sa,i,i))])*B[$(sub2ind(sb,i,j))])
106106
for k = 1:i-1
107-
ex = :($ex + A.data[$(sub2ind(sa,k,i))].'*B[$(sub2ind(sb,k,j))])
107+
ex = :($ex + transpose(A.data[$(sub2ind(sa,k,i))])*B[$(sub2ind(sb,k,j))])
108108
end
109109
push!(code.args, :($(X[i,j]) = $ex))
110110
end
@@ -186,9 +186,9 @@ end
186186
code = quote end
187187
for j = 1:n
188188
for i = 1:m
189-
ex = :(A.data[$(sub2ind(sa,i,i))].'*B[$(sub2ind(sb,i,j))])
189+
ex = :(transpose(A.data[$(sub2ind(sa,i,i))])*B[$(sub2ind(sb,i,j))])
190190
for k = i+1:m
191-
ex = :($ex + A.data[$(sub2ind(sa,k,i))].'*B[$(sub2ind(sb,k,j))])
191+
ex = :($ex + transpose(A.data[$(sub2ind(sa,k,i))])*B[$(sub2ind(sb,k,j))])
192192
end
193193
push!(code.args, :($(X[i,j]) = $ex))
194194
end
@@ -267,9 +267,9 @@ end
267267
code = quote end
268268
for i = 1:m
269269
for j = 1:n
270-
ex = :(A[$(sub2ind(sa,i,j))]*B[$(sub2ind(sb,j,j))].')
270+
ex = :(A[$(sub2ind(sa,i,j))]*transpose(B[$(sub2ind(sb,j,j))]))
271271
for k = j+1:n
272-
ex = :($ex + A[$(sub2ind(sa,i,k))]*B.data[$(sub2ind(sb,j,k))].')
272+
ex = :($ex + A[$(sub2ind(sa,i,k))]*transpose(B.data[$(sub2ind(sb,j,k))]))
273273
end
274274
push!(code.args, :($(X[i,j]) = $ex))
275275
end
@@ -348,9 +348,9 @@ end
348348
code = quote end
349349
for i = 1:m
350350
for j = n:-1:1
351-
ex = :(A[$(sub2ind(sa,i,j))]*B[$(sub2ind(sb,j,j))].')
351+
ex = :(A[$(sub2ind(sa,i,j))]*transpose(B[$(sub2ind(sb,j,j))]))
352352
for k = 1:j-1
353-
ex = :($ex + A[$(sub2ind(sa,i,k))]*B.data[$(sub2ind(sb,j,k))].')
353+
ex = :($ex + A[$(sub2ind(sa,i,k))]*transpose(B.data[$(sub2ind(sb,j,k))]))
354354
end
355355
push!(code.args, :($(X[i,j]) = $ex))
356356
end

test/runtests.jl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
using StaticArrays
2-
using Base.Test
2+
if VERSION > v"0.7-"
3+
using Test
4+
using Random
5+
else
6+
using Base.Test
7+
end
38

49
# We generate a lot of matrices using rand(), but unit tests should be
510
# deterministic. Therefore seed the RNG here (and further down, to avoid test

0 commit comments

Comments
 (0)