PHP's hypot in TypeScript

How to use

Install via yarn add locutus and import: import { hypot } from 'locutus/php/math/hypot'.

Or with CommonJS: const { hypot } = require('locutus/php/math/hypot')

Use a bundler that supports tree-shaking so you only ship the functions you actually use. Vite, webpack, Rollup, and Parcel all handle this. For server-side use this is less of a concern.

Examples

These examples are extracted from test cases that automatically verify our functions against their native counterparts.

#codeexpected result
1hypot(3, 4)5
2hypot([], 'a')null

Here's what our current TypeScript equivalent to PHP's hypot looks like.

import type { PhpRuntimeValue } from '../_helpers/_phpTypes.ts'

type HypotInput = PhpRuntimeValue

export function hypot(x: HypotInput, y: HypotInput): number | null {
// discuss at: https://locutus.io/php/hypot/
// original by: Onno Marsman (https://twitter.com/onnomarsman)
// improved by: Robert Eisele (https://www.xarg.org/)
// example 1: hypot(3, 4)
// returns 1: 5
// example 2: hypot([], 'a')
// returns 2: null

const left = Math.abs(Number(x))
const right = Math.abs(Number(y))

let t = Math.min(left, right)
const max = Math.max(left, right)
t = t / max

return max * Math.sqrt(1 + t * t) || null
}

Improve this function

Locutus is a community effort following The McDonald's Theory: we ship first iterations, hoping others will improve them. If you see something that could be better, we'd love your contribution.

View on GitHub · Edit on GitHub · View Raw


« More PHP math functions


Star