hypot function in matlab purports to be more numerically stable at computing the hypotenuse of a (right-)triangle in 2D. The example the
help hypot gives is:
a = 3*[1e300 1e-300]; b = 4*[1e300 1e-300]; c1 = sqrt(a.^2 + b.^2) c2 = hypot(a,b)
where you see as output:
c1 = Inf 0
c2 = 5e+300 5e-300
this is a compiled built-in function so you can’t just
open hypot to find out what its doing. It might just be pre-dividing by the maximum absolute value. There’s probably a better reference for this, but I found it in: “Vector length and normalization difficulties” by Mike Day.
Continuing this example:
m = max(abs([a;b])) c3 = m.*sqrt((a./m).^2 + (b./m).^2)
c3 = 5e+300 5e-300
While matlab’s hypot only accepts two inputs, pre-dividing by the maximum obviously extends to any dimension.