Skip to content

Commit b51690d

Browse files
committed
0.5 and 0.6 tests pass without error/warnings
1 parent 1da9118 commit b51690d

File tree

6 files changed

+119
-104
lines changed

6 files changed

+119
-104
lines changed

src/BandedMatrices.jl

+33-14
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,14 @@ __precompile__()
33
module BandedMatrices
44
using Base
55

6-
import Base: getindex, setindex!, *, .*, +, .+, -, .-, ==, <, <=, >,
7-
>=, ./, /, .^, ^, \, transpose, showerror
6+
import Base: getindex, setindex!, *, +, -, ==, <, <=, >,
7+
>=, /, ^, \, transpose, showerror
88

99

10+
if VERSION < v"0.6.0-dev"
11+
import Base: .*, .+, .-, ./, .^
12+
end
13+
1014
import Base: convert, size, view
1115

1216
import Base.BLAS: libblas
@@ -170,11 +174,11 @@ returns an unitialized `n`×`m` banded matrix of type `T` with bandwidths `(l,u)
170174

171175
# Use zeros to avoid unallocated entries for bigfloat
172176
BandedMatrix{T<:BlasFloat}(::Type{T},n::Integer,m::Integer,a::Integer,b::Integer) =
173-
BandedMatrix{T}(Array(T,b+a+1,m),n,a,b)
177+
BandedMatrix{T}(Matrix{T}(b+a+1,m),n,a,b)
174178
BandedMatrix{T<:Number}(::Type{T},n::Integer,m::Integer,a::Integer,b::Integer) =
175179
BandedMatrix{T}(zeros(T,b+a+1,m),n,a,b)
176180
BandedMatrix{T}(::Type{T},n::Integer,m::Integer,a::Integer,b::Integer) =
177-
BandedMatrix{T}(Array(T,b+a+1,m),n,a,b)
181+
BandedMatrix{T}(Matrix{T}(b+a+1,m),n,a,b)
178182

179183

180184

@@ -910,7 +914,7 @@ bandwidth(A::BandedMatrix,k::Integer) = k==1?A.l:A.u
910914

911915

912916
function Base.sparse(B::BandedMatrix)
913-
i=Array(Int,length(B.data));j=Array(Int,length(B.data))
917+
i=Vector{Int}(length(B.data));j=Vector{Int}(length(B.data))
914918
n,m=size(B.data)
915919
Bn=size(B,1)
916920
vb=copy(vec(B.data))
@@ -1015,14 +1019,14 @@ function *{T<:Number,V<:Number}(A::BLASBandedMatrix{T},B::StridedMatrix{V})
10151019
end
10161020
n,m=size(A,1),size(B,2)
10171021

1018-
A_mul_B!(Array(promote_type(T,V),n,m),A,B)
1022+
A_mul_B!(Matrix{promote_type(T,V)}(n,m),A,B)
10191023
end
10201024

10211025
*{T<:Number,V<:Number}(A::StridedMatrix{T},B::BLASBandedMatrix{V}) =
10221026
A*Array(B)
10231027

10241028
*{T<:BlasFloat}(A::BLASBandedMatrix{T},b::StridedVector{T}) =
1025-
A_mul_B!(Array(T,size(A,1)),A,b)
1029+
A_mul_B!(Vector{T}(size(A,1)),A,b)
10261030

10271031
function *{T}(A::BandedMatrix{T},b::StridedVector{T})
10281032
ret = zeros(T,size(A,1))
@@ -1072,7 +1076,7 @@ end
10721076

10731077
## Matrix.*Matrix
10741078

1075-
function .*(A::BandedMatrix, B::BandedMatrix)
1079+
function broadcast(::typeof(*), A::BandedMatrix, B::BandedMatrix)
10761080
@assert size(A,1)==size(B,1)&&size(A,2)==size(B,2)
10771081

10781082
l=min(A.l,B.l);u=min(A.u,B.u)
@@ -1086,13 +1090,28 @@ function .*(A::BandedMatrix, B::BandedMatrix)
10861090
end
10871091

10881092

1093+
1094+
10891095
## numbers
1090-
for OP in (:*,:/,:.*,:./)
1091-
@eval $OP(A::BandedMatrix,b::Number) = BandedMatrix($OP(A.data,b),A.m,A.l,A.u)
1096+
for OP in (:*,:/)
1097+
@eval begin
1098+
$OP(A::BandedMatrix, b::Number) = BandedMatrix($OP(A.data,b),A.m,A.l,A.u)
1099+
broadcast(::typeof($OP), A::BandedMatrix, b::Number) =
1100+
BandedMatrix($OP.(A.data,b),A.m,A.l,A.u)
1101+
end
10921102
end
10931103

1094-
for OP in (:*,:.*,:./)
1095-
@eval $OP(a::Number,B::BandedMatrix) = BandedMatrix($OP(a,B.data),B.m,B.l,B.u)
1104+
1105+
*(a::Number,B::BandedMatrix) = BandedMatrix(a*B.data,B.m,B.l,B.u)
1106+
broadcast(::typeof(*), a::Number, B::BandedMatrix) = BandedMatrix(a.*B.data,B.m,B.l,B.u)
1107+
1108+
if VERSION < v"0.6.0-dev"
1109+
@eval quote
1110+
.*(A::BandedMatrix, B::BandedMatrix) = (*).(A,B)
1111+
.*(A::BandedMatrix, b::Number) = (*).(A,b)
1112+
.*(a::Number, B::BandedMatrix) = (*).(a,B)
1113+
./(A::BandedMatrix, b::Number) = (/).(A,b)
1114+
end
10961115
end
10971116

10981117

@@ -1153,7 +1172,7 @@ if VERSION < v"0.5.0-rc4"
11531172

11541173
if !isempty(B) && size(B,1)  1000 && size(B,2)  1000
11551174
header && println(io,":")
1156-
M=Array(Any,size(B)...)
1175+
M=Array{Any}(size(B)...)
11571176
fill!(M,PrintShow(""))
11581177
for j = 1:size(B,2), k = colrange(B,j)
11591178
M[k,j]=B[k,j]
@@ -1170,7 +1189,7 @@ else
11701189

11711190
if !isempty(B) && size(B,1)  1000 && size(B,2)  1000
11721191
header && println(io,":")
1173-
M=Array(Any,size(B)...)
1192+
M=Array{Any}(size(B)...)
11741193
fill!(M,PrintShow(""))
11751194
for j = 1:size(B,2), k = colrange(B,j)
11761195
M[k,j]=B[k,j]

src/BandedQR.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ function banded_qrfact!(R::BandedMatrix)
160160
T=eltype(R)
161161
M=R.l+1 # number of diag+subdiagonal bands
162162
m,n=size(R)
163-
W=Array(T,M,(n<m?n:m-1))
163+
W=Matrix{T}(M,(n<m?n:m-1))
164164
w=pointer(W)
165165
r=pointer(R.data)
166166
sz=sizeof(T)

src/SymBandedMatrix.jl

+8-8
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ returns an unitialized `n`×`n` symmetric banded matrix of type `T` with bandwid
3434

3535
# Use zeros to avoid unallocated entries for bigfloat
3636
SymBandedMatrix{T<:BlasFloat}(::Type{T},n::Integer,k::Integer) =
37-
SymBandedMatrix{T}(Array(T,k+1,n),k)
37+
SymBandedMatrix{T}(Matrix{T}(k+1,n),k)
3838
SymBandedMatrix{T<:Number}(::Type{T},n::Integer,k::Integer) =
3939
SymBandedMatrix{T}(zeros(T,k+1,n),k)
4040
SymBandedMatrix{T}(::Type{T},n::Integer,k::Integer) =
41-
SymBandedMatrix{T}(Array(T,k+1,n),k)
41+
SymBandedMatrix{T}(Matrix{T}(k+1,n),k)
4242

4343

4444
for MAT in (:SymBandedMatrix, :AbstractBandedMatrix, :AbstractMatrix, :AbstractArray)
@@ -250,7 +250,7 @@ end
250250
A*Array(B)
251251

252252
*{T<:BlasFloat}(A::SymBandedMatrix{T},b::StridedVector{T}) =
253-
A_mul_B!(Array(T,size(A,1)),A,b)
253+
A_mul_B!(Vector{T}(size(A,1)),A,b)
254254

255255
function *{T}(A::SymBandedMatrix{T},b::StridedVector{T})
256256
ret = zeros(T,size(A,1))
@@ -309,12 +309,12 @@ Base.A_mul_B!{T}(c::AbstractVector,A::SymBandedMatrix{T},b::AbstractVector) =
309309
## eigvals routine
310310

311311

312-
function tridiagonalize!(A::SymBandedMatrix)
312+
function tridiagonalize!{T}(A::SymBandedMatrix{T})
313313
n=size(A,1)
314-
d = Array(Float64,n)
315-
e = Array(Float64,n-1)
316-
q = Array(Float64,0)
317-
work = Array(Float64,n)
314+
d = Vector{T}(n)
315+
e = Vector{T}(n-1)
316+
q = Vector{T}(0)
317+
work = Vector{T}(n)
318318

319319
sbtrd!('N','U',
320320
size(A,1),A.k,pointer(A),leadingdimension(A),

0 commit comments

Comments
 (0)