I'm using julia-0.3.3 installed via yum on Fedora 21 (I saw similar
behavior on Fedora 20 as well) and I'm encountering behavior I can't
explain. I haven't been able to come up with a simple reproducible case
because this weirdness with NaN's appears to be non-deterministic and
restarting my julia kernel fixes the problem more often than not but I'm
hoping that someone can shed some light on what's going on.
Here's the relevant part of my notebook session (I apologize for the
strange formatting):
anynan{T}(x::Array{T}) = any(isnan, x)
anynan (generic function with 3 methods)
typeof(rkvar2.w.f1), typeof(rkvar2.sol), typeof(rkvar2.w.rk2)
(Array{Float64,2},Array{Float64,2},Array{Float64,2})
anynan(rkvar2.w.f1), minimum(rkvar2.w.f1), maximum(rkvar2.w.f1)
(false,-1.1317244376193704e-5,5.1067129405671126e-5)
anynan(rkvar2.sol), minimum(rkvar2.sol), maximum(rkvar2.sol)
(false,-2.789562122325811e-7,4.2592881099528343e-7)
rkvar2.w.rk2[:,:] = rkvar2.sol + 0.5t.dt*rkvar.w.f1
241x241 Array{Float64,2}:
3.38286e-48 1.52057e-48 -9.05314e-48 … 1.52057e-48 3.38286e-48
1.52057e-48 -8.61345e-48 -3.74648e-47 -8.61345e-48 1.52057e-48
-9.05314e-48 -3.74648e-47 -9.55565e-47 -3.74648e-47 -9.05314e-48
-3.83165e-47 -9.43884e-47 -1.73654e-46 -9.43884e-47 -3.83165e-47
-9.57104e-47 -1.7154e-46 -2.02324e-46 -1.7154e-46 -9.57104e-47
-1.73204e-46 -2.02326e-46 2.34406e-47 … -2.02326e-46 -1.73204e-46
-2.05281e-46 7.70356e-48 9.17989e-46 7.70356e-48 -2.05281e-46
-1.58991e-48 8.52933e-46 3.06846e-45 8.52933e-46 -1.58991e-48
8.2321e-46 2.89897e-45 6.82077e-45 2.89897e-45 8.2321e-46
2.8249e-45 6.51202e-45 1.10477e-44 6.51202e-45 2.8249e-45
6.38329e-45 1.07416e-44 1.06454e-44 … 1.07416e-44 6.38329e-45
1.06528e-44 1.10276e-44 -7.09009e-45 1.10276e-44 1.06528e-44
1.13985e-44 -4.18965e-45 -6.50745e-44 -4.18965e-45 1.13985e-44
⋮ ⋱ ⋮
1.06528e-44 1.10276e-44 -7.09009e-45 1.10276e-44 1.06528e-44
6.38329e-45 1.07416e-44 1.06454e-44 … 1.07416e-44 6.38329e-45
2.8249e-45 6.51202e-45 1.10477e-44 6.51202e-45 2.8249e-45
8.2321e-46 2.89897e-45 6.82077e-45 2.89897e-45 8.2321e-46
-1.58991e-48 8.52933e-46 3.06846e-45 8.52933e-46 -1.58991e-48
-2.05281e-46 7.70356e-48 9.17989e-46 7.70356e-48 -2.05281e-46
-1.73204e-46 -2.02326e-46 2.34406e-47 … -2.02326e-46 -1.73204e-46
-9.57104e-47 -1.7154e-46 -2.02324e-46 -1.7154e-46 -9.57104e-47
-3.83165e-47 -9.43884e-47 -1.73654e-46 -9.43884e-47 -3.83165e-47
-9.05314e-48 -3.74648e-47 -9.55565e-47 -3.74648e-47 -9.05314e-48
1.52057e-48 -8.61345e-48 -3.74648e-47 -8.61345e-48 1.52057e-48
3.38286e-48 1.52057e-48 -9.05314e-48 … 1.52057e-48 3.38286e-48
anynan(rkvar2.w.rk2)
true
anynan(rkvar2.sol + 0.5t.dt*rkvar.w.f1)
true
0.5t.dt
0.005000000000000001
anynan(rkvar2.sol + rkvar.w.f1)
true
idx2d(find(isnan(rkvar2.w.rk2)), rkvar2.w.rk2)
([(122,86),(125,87)],[NaN,NaN])
i, j = 122, 86
rkvar2.w.rk2[i,j]
NaN
rkvar2.w.rk2[i,j] = rkvar2.sol[i,j] + 0.5t.dt*rkvar2.w.f1[i,j]
0.0
for jj=1:size(rkvar2.sol, 2), ii=1:size(rkvar2.sol,1)
rkvar2.w.rk2[ii,jj] = rkvar2.sol[ii,jj] + 0.5t.dt*rkvar2.w.f1[ii,jj]
end
rkvar2.w.rk2[i,j]
0.0
Where are these NaN's coming from? In the actual code that's failing the
updates are written using @nloops and @nref but I'm still getting NaN's.
Any ideas on what I can do?
thanks,
Peter.