Hi,

I have been playing around with Float16 arrays and I haven't been able to 
figure out what is going on in this case, and whether it is expected 
behaviour. According to the Wikipedia article half precision floating point 
numbers are used for data storage and not for computations.

I was surprised to find that 

> using Base.Test
> @test_approx_eq rand(Float16, 10,10) rand(Float16, 10, 10)

gave no error, or even

> @test_approx_eq 1000rand(Float16, 10,10) 1000rand(Float16, 10, 10)

gave no errors. Using the testing modules method of working out the 
tolerance for comparison of the arrays gives

> array_eps(a) = eps(float(maximum(x->(isfinite(x) ? abs(x) : 
oftype(x,NaN)), a)))
> va=rand(10,10,3); vb=rand(Float16, 10,10,3); 
1E4*length(va)*max(array_eps(va), array_eps(vb))
1464.84375

So a tolerance of over 1000. Is this to be expected with Float16, or not?

Reply via email to