Good catch Jeffrey. I will file a bug report!
On Saturday, March 26, 2016 at 3:50:31 PM UTC-4, Jeffrey Sarnoff wrote:
>
> Looking at your note, I noticed this:
>
> * hypot(Inf,NaN) == hypot(NaN,Inf) == Inf*
>
> That cannot be correct because *sqrt(x^2 + NaN^2) => sqrt(x^2 + NaN) =>
> sqrt(NaN) => NaN*
>
> On Saturday, March 26, 2016 at 3:23:32 PM UTC-4, feza wrote:
>>
>> Why is hypot1 preferred (in Base) over hypot2 ? To me it seems better to
>> just return y in the one commented line
>>
>> function hypot2{T<:AbstractFloat}(x::T, y::T)
>>
>> x = abs(x)
>>
>> y = abs(y)
>>
>> if x < y
>>
>> x, y = y, x
>>
>> end
>>
>> if x == 0
>>
>> return y ## compare with below
>>
>> else
>>
>> r = y/x
>>
>> if isnan(r)
>>
>> isinf(x) && return x
>>
>> isinf(y) && return y
>>
>> return r
>>
>> end
>>
>> end
>>
>> x * sqrt(one(r)+r*r)
>>
>> end
>>
>>
>>
>> function hypot1{T<:AbstractFloat}(x::T, y::T)
>>
>> x = abs(x)
>>
>> y = abs(y)
>>
>> if x < y
>>
>> x, y = y, x
>>
>> end
>>
>> if x == 0
>>
>> r = y/one(x) # Why not just return y?
>> else
>>
>> r = y/x
>>
>> if isnan(r)
>>
>> isinf(x) && return x
>>
>> isinf(y) && return y
>>
>> return r
>>
>> end
>>
>> end
>>
>> x * sqrt(one(r)+r*r)
>>
>> end
>>
>>
>
