This actually seems to be a type instability issue in Base.eigs:
julia> @code_warntype eigs(A) Variables: A::SparseMatrixCSC{Float64,Int64} Body: begin $(Expr(:line, 50, symbol("linalg/arnoldi.jl"), symbol(""))) GenSym(8) = (top(ccall))(:jl_alloc_array_1d,(top(apply_type))(Base.Array,Any,1)::Type{Array{Any,1}},(top(svec))(Base.Any,Base.Int)::SimpleVector,Array{Any,1},0,0,0)::Array{Any,1} GenSym(9) = GenSym(8) return (Base.LinAlg.__eigs#221__)(GenSym(9),A::SparseMatrixCSC{Float64,Int64})::Tuple end::Tuple julia> @code_warntype eigs(Symmetric(A)) Variables: A::Symmetric{Float64,SparseMatrixCSC{Float64,Int64}} Body: begin $(Expr(:line, 50, symbol("linalg/arnoldi.jl"), symbol(""))) GenSym(8) = (top(ccall))(:jl_alloc_array_1d,(top(apply_type))(Base.Array,Any,1)::Type{Array{Any,1}},(top(svec))(Base.Any,Base.Int)::SimpleVector,Array{Any,1},0,0,0)::Array{Any,1} GenSym(9) = GenSym(8) return (Base.LinAlg.__eigs#221__)(GenSym(9),A::Symmetric{Float64,SparseMatrixCSC{Float64,Int64}})::Tuple end::Tuple I can’t find anything on the issue tracker about it, so it might be a good idea to file a new issue <https://github.com/JuliaLang/julia/issues/new>. // t On Saturday, November 7, 2015 at 5:25:30 PM UTC+1, David Gleich wrote: I'm trying to get a type-stable output from a symmetric sparse eigenvalue > problem. > > Any ideas why neither of these ideas work to give me a deterministic > return of Array{Float64,1} ? > > n = 500; A = sparse(1:n-1,2:n,1.,n,n); A = A + A' > @show issym(A) > function myeig1(A::SparseMatrixCSC{Float64,Int64}) > d,V = eigs(A;tol=1e-4) > return d > end > > function myeig2(A::SparseMatrixCSC{Float64,Int64}) > d,V = eigs(Symmetric(A);tol=1e-4) > return d > end > > @code_warntype myeig1(A) > @code_warntype myeig2(A) > > Thanks, > David Gleich >