1. Make sure that your code is correct for the inputs you allow. There 
   is no need to accept BigFloat (nor Float16) if you end up converting to 
   Float64 for the calculation anyway (the user of your code can do that 
   himself). If you don't care enough about different precisions to even think 
   about  how it will affect your program, I think it is better to add a TODO 
   comment in the code/documentation, so that others that care might submit 
   the required changes in a PR.
   2. Testing your algorithm with random Float16 and BigInt will sometimes 
   raise new issues that affects Float64, but is much harder to find there. 
   There is definitely value in thinking about how different makes a 
   difference (or why it doesn't).


Usually you shouldn't use abstract types in a type definition, but rather 
make a parametric type. This is for performance, because the current Julia 
runtime is very slow if it can't statically infer the types of the members 
of a type. See that

type A{T<:FloatingPoint}
      member::T
end

is usually much better than

type A
    member::FloatingPoint
end

Regards
Ivar

torsdag 5. mars 2015 18.27.38 UTC+1 skrev Simon Danisch følgende:
>
> I think it's a good idea to have things parametric and type stable. So I'd 
> vote for T <: FloatingPoint.
> Like this, the type you call a function with can be propagated down to all 
> other functions and no conversions are needed.
> As you said, this gets difficult as some people have Float64 hard coded 
> all over the place. It's understandable as John pointed out. 
> But for someone like me who works with GPU's which depending on the 
> graphics card perform up to 30 times faster with Float32, this is quite 
> annoying as I always need to convert&copy.
>
> Am Donnerstag, 5. März 2015 17:55:40 UTC+1 schrieb Benjamin Deonovic:
>>
>> Moving a post from julia issues to here since it is more appropriate: 
>> https://github.com/JuliaLang/julia/issues/10408
>>
>> If I am making a function or composite type that involves floating point 
>> numbers, should I enforce those numbers to be Float64 or FloatingPoint? I 
>> thought 
>> it should be FloatingPoint so that the function/type will work with any 
>> kind of floating point number. However, several julia packages enforce 
>> Float64 (e.g. Distributions package Multinomial distribution) and so I run 
>> into problems and have to put in a lot of converts in my code to Float64. Am 
>> I doing this wrong? I'm quite new to julia
>>
>>
>> I don't have any intention to use non Float64 floatingpoints numbers, I'm 
>> just trying to write good code. I saw a lot of examples where people 
>> recommended to to use Integer rather than Int64 or String rather than 
>> ASCIIString, etc. I'm just trying to be consistent. I'm fine just using 
>> Float64 if that is the appropriate approach here.
>>
>

Reply via email to