I was wondering how Julia supports half precision operations? It seems it
does (more or less) but I'm not sure if there's a lot of type conversion
going on behind the scenes with associated overhead. Would it be more
efficient to store and crunch on Float32s?
julia> rand(Float16,2,2) * rand(Float16,2,2)
2x2 Array{Float16,2}:
0.58301 1.0508
0.48145 0.73438
julia> sparse(rand(Float16,2,2))
2x2 sparse matrix with 4 Float16 entries:
[1, 1] = 0.448
[2, 1] = 0.15771
[1, 2] = 0.79932
[2, 2] = 0.50928
julia> fft(rand(Float16,2,2))
2x2 Array{Complex{Float64},2}:
1.76245+0.0im -0.0603027+0.0im
-0.129639+0.0im -0.390869+0.0im
Oops for the last one - is fft always double precision?