tn Wrote:

> --------------------
> int      []     271
> int      [)     271
> int      (]     283
> int      ()     285
> 
> long     []     372
> long     [)     399
> long     (]     401
> long     ()     397
> 
> float    []     286
> float    [)     374
> float    (]    5252
> float    ()    5691
> 
> double   []     348
> double   [)     573
> double   (]    5319
> double   ()    5875
> 
> real     []     434
> real     [)     702
> real     (]    2832
> real     ()    3056
> --------------------
> 
> In my opinion floating point uniforms with (] or () as boundary types are 
> unacceptably slow. I had to use 1 - uniform!"[)"(0.0, 1.0) instead of 
> uniform!"(]"(0.0, 1.0) because of this issue. I would also expect versions 
> using float and double to be faster than the version using real.

After further investigation it seems that the slowdown happens because of 
subnormal numbers in calculations. If there is an open boundary at zero then 
the call of nextafter in uniform returns a subnormal number. Perhaps next 
normal number could be used instead?

Reply via email to