I’ve narrowed the bug a bit further. But it still doesn’t make any sense.
The offending function is actually
adaptiveqr{T<:Operator}(B::Vector{T},v::Array,tol::Real,N) =
adaptiveqr!(AlmostBandedOperator(B),convertvec(B[end],v),tol,N) #May need to
copy v in the future
But calling the line itself doesn’t help. I can’t even @code_typed the
function call!
julia> using ApproxFun
julia> d=Interval(-10.,5.);
julia> Bm=Evaluation(d,d.a);
julia> Bp=Evaluation(d,d.b);
julia> B=[Bm;Bp];
julia> D2=Derivative(d,2);
julia> X=Multiplication(Fun(x->x,d));
julia> A=[B;D2-X];b=[airyai(d.a),airyai(d.b),0.]
3-element Array{Float64,1}:
0.0402412
0.000108344
0.0
julia> methods(ApproxFun.adaptiveqr)
# 4 methods for generic function "adaptiveqr":
adaptiveqr(B::ApproxFun.Operator{T},v::Array{T,N},tol::Real,N) at
/Users/solver/.julia/v0.4/ApproxFun/src/Operators/adaptiveqr.jl:170
adaptiveqr{T<:ApproxFun.Operator{T}}(B::Array{T<:ApproxFun.Operator{T},1},v::Array{T,N},tol::Real,N)
at /Users/solver/.julia/v0.4/ApproxFun/src/Operators/adaptiveqr.jl:171
adaptiveqr(M,b) at
/Users/solver/.julia/v0.4/ApproxFun/src/Operators/adaptiveqr.jl:135
adaptiveqr(M,b,tol) at
/Users/solver/.julia/v0.4/ApproxFun/src/Operators/adaptiveqr.jl:136
julia> @code_typed ApproxFun.adaptiveqr(A,b)
ERROR: TypeError: subtype: expected Type{T}, got Tuple{TypeVar,TypeVar}
in abstract_call_gf at ./inference.jl:586
in abstract_call at ./inference.jl:857
in abstract_eval_call at ./inference.jl:904
in abstract_eval at ./inference.jl:931
in abstract_eval_call at ./inference.jl:881
in abstract_eval at ./inference.jl:931
in abstract_eval_call at ./inference.jl:881
> On 15 May 2015, at 1:09 am, Yichao Yu <[email protected]> wrote:
>
> On Thu, May 14, 2015 at 11:02 AM, David P. Sanders <[email protected]>
> wrote:
>>
>>
>> El miércoles, 13 de mayo de 2015, 23:51:33 (UTC-5), Sheehan Olver escribió:
>>>
>>> This is for latest build of 0.4 on Mac OS X Yosemite
>>>
>>> On Thursday, May 14, 2015 at 2:51:07 PM UTC+10, Sheehan Olver wrote:
>>>>
>>>>
>>>> I get the error message below, and cannot find any sign of the cause.
>>>> With debug statements, I found that its dying trying to call a function
>>>> with
>>>> the signature
>>>>
>>>> function
>>>> linsolve{T<:Operator,N<:Number}(A::Vector{T},b::Array{N};tolerance=0.01,maxlength=1000000)
>>
>>
>> Here, `Array{N}` is a strange type. Do you mean `Array{T, N}`? Or what kind
>> of object should `b` be?
>
> The `N` here should be fine since `N<:Number`. It is indeed a little
> bit confusing given `N` is often used as the name of a number
> parameter but it shouldn't cause any issue.
>
> I guess it will probably help to see the code that is calling this
> function to tell what exactly is wrong.
>
>>
>> David.
>>
>>
>>>>
>>>> ...
>>>> end
>>>>
>>>> Any thoughts? Maybe its a bug in Julia?
>>>>
>>>>
>>>>
>>>> TypeError: subtype: expected Type{T}, got Tuple{TypeVar,TypeVar}
>>>>
>>>> in abstract_call_gf at ./inference.jl:586
>>>>
>>>> in abstract_call at ./inference.jl:857
>>>>
>>>> in abstract_eval_call at ./inference.jl:904
>>>>
>>>> in abstract_eval at ./inference.jl:931
>>>>
>>>> in abstract_eval_call at ./inference.jl:881
>>>>
>>>> in abstract_eval at ./inference.jl:931
>>>>
>>>> in abstract_eval_call at ./inference.jl:881
>>>>
>>>> in abstract_eval at ./inference.jl:931
>>>>
>>>> in typeinf_uncached at ./inference.jl:1591
>>>>
>>>> in typeinf at ./inference.jl:1307
>>>>
>>>> in typeinf at ./inference.jl:1257
>>>>
>>>> in abstract_call_gf at ./inference.jl:696
>>>>
>>>> in abstract_call at ./inference.jl:857
>>>>
>>>> in abstract_eval_call at ./inference.jl:904
>>>>
>>>> in abstract_eval at ./inference.jl:931
>>>>
>>>> in abstract_eval_call at ./inference.jl:881
>>>>
>>>> in abstract_eval at ./inference.jl:931
>>>>
>>>> in typeinf_uncached at ./inference.jl:1591
>>>>
>>>> in typeinf at ./inference.jl:1307
>>>>
>>>> in typeinf at ./inference.jl:1257
>>>>
>>>> in abstract_call_gf at ./inference.jl:696
>>>>
>>>> in abstract_call at ./inference.jl:857
>>>>
>>>> in abstract_eval_call at ./inference.jl:904
>>>>
>>>> in abstract_eval at ./inference.jl:931
>>>>
>>>> in abstract_eval_call at ./inference.jl:881
>>>>
>>>> in abstract_eval at ./inference.jl:931
>>>>
>>>> in typeinf_uncached at ./inference.jl:1591
>>>>
>>>> in typeinf at ./inference.jl:1307
>>>>
>>>> in typeinf at ./inference.jl:1257
>>>>
>>>> in abstract_call_gf at ./inference.jl:696
>>>>
>>>> in abstract_call at ./inference.jl:857
>>>>
>>>> in abstract_eval_call at ./inference.jl:904
>>>>
>>>> in abstract_eval at ./inference.jl:931
>>>>
>>>> in abstract_interpret at ./inference.jl:1080
>>>>
>>>> in typeinf_uncached at ./inference.jl:1518
>>>>
>>>> in typeinf at ./inference.jl:1307
>>>>
>>>> in typeinf at ./inference.jl:1257
>>>>
>>>> in abstract_call_gf at ./inference.jl:696
>>>>
>>>> in abstract_call at ./inference.jl:857
>>>>
>>>> in abstract_call at ./inference.jl:817
>>>>
>>>> in abstract_eval_call at ./inference.jl:904
>>>>
>>>> in abstract_eval at ./inference.jl:931
>>>>
>>>> in typeinf_uncached at ./inference.jl:1591
>>>>
>>>> in typeinf at ./inference.jl:1307
>>>>
>>>> in typeinf at ./inference.jl:1257
>>>>
>>>> in abstract_call_gf at ./inference.jl:696
>>>>
>>>> in abstract_call at ./inference.jl:857
>>>>
>>>> in abstract_call at ./inference.jl:817
>>>>
>>>> in abstract_eval_call at ./inference.jl:904
>>>>
>>>> in abstract_eval at ./inference.jl:931
>>>>
>>>> in abstract_eval_call at ./inference.jl:881
>>>>
>>>> in abstract_eval at ./inference.jl:931
>>>>
>>>> in typeinf_uncached at ./inference.jl:1591
>>>>
>>>> in typeinf at ./inference.jl:1307
>>>>
>>>> in typeinf at ./inference.jl:1257
>>>>
>>>> in abstract_call_gf at ./inference.jl:696
>>>>
>>>> in abstract_call at ./inference.jl:857
>>>>
>>>> in abstract_eval_call at ./inference.jl:904
>>>>
>>>> in abstract_eval at ./inference.jl:931
>>>>
>>>> in typeinf_uncached at ./inference.jl:1591
>>>>
>>>> in typeinf at ./inference.jl:1307
>>>>
>>>> in typeinf at ./inference.jl:1257
>>>>
>>>> in abstract_call_gf at ./inference.jl:696
>>>>
>>>> in abstract_call at ./inference.jl:857
>>>>
>>>> in abstract_eval_call at ./inference.jl:904
>>>>
>>>> in abstract_eval at ./inference.jl:931
>>>>
>>>> in abstract_interpret at ./inference.jl:1080
>>>>
>>>> in typeinf_uncached at ./inference.jl:1518
>>>>
>>>> in typeinf at ./inference.jl:1307
>>>>
>>>> in typeinf at ./inference.jl:1257
>>>>
>>>> in abstract_call_gf at ./inference.jl:696
>>>>
>>>> in abstract_call at ./inference.jl:857
>>>>
>>>> in abstract_eval_call at ./inference.jl:904
>>>>
>>>> in abstract_eval at ./inference.jl:931
>>>>
>>>> in abstract_interpret at ./inference.jl:1080
>>>>
>>>> in typeinf_uncached at ./inference.jl:1518
>>>>
>>>> in typeinf at ./inference.jl:1307
>>>>
>>>> in typeinf at ./inference.jl:1257
>>>>
>>>> in abstract_call_gf at ./inference.jl:696
>>>>
>>>> in abstract_call at ./inference.jl:857
>>>>
>>>> in abstract_eval_call at ./inference.jl:904
>>>>
>>>> in abstract_eval at ./inference.jl:931
>>>>
>>>> in typeinf_uncached at ./inference.jl:1591
>>>>
>>>> in typeinf at ./inference.jl:1307
>>>>
>>>> in typeinf_ext at ./inference.jl:1251
>>>>
>>>> in linsolve at
>>>> /Users/solver/.julia/v0.4/ApproxFun/src/Operators/linsolve.jl:108
>>>>
>>>> in linsolve at
>>>> /Users/solver/.julia/v0.4/ApproxFun/src/Operators/linsolve.jl:126
>>>>
>>>> in linsolve at
>>>> /Users/solver/.julia/v0.4/ApproxFun/src/Operators/linsolve.jl:130
>>>>
>>>> in ./ at
>>>> /Users/solver/.julia/v0.4/ApproxFun/src/Extras/specialfunctions.jl:89
>>>>
>>>>
>>