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.

Reply via email to