The `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
```

and

```
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)
```

produces

```
c3 =
5e+300 5e-300
```

While matlab’s hypot only accepts two inputs, pre-dividing by the maximum obviously extends to any dimension.