Функция math.Hypot

Функция math.Hypot вычисляет евклидову гипотенузу, то есть квадратный корень из суммы квадратов двух чисел. В первый параметр передается значение катета x, во второй параметр передается значение катета y. Функция возвращает значение типа float64, равное sqrt(x*x + y*y). Особенность данной функции заключается в том, что она предотвращает переполнение и потерю точности, которые могут возникнуть при прямом возведении больших чисел в квадрат.

Синтаксис

gomath.Hypot(x, y float64) float64

Пример

Давайте вычислим гипотенузу прямоугольного треугольника с катетами 3 и 4:

gopackage main

import (
  "fmt"
  "math"
)

func main() {
  res := math.Hypot(3, 4)
  fmt.Println(res)
}

Результат выполнения кода:

go5

Пример

Функция math.Hypot особенно полезна при работе с большими числами, где прямое вычисление может вызвать переполнение. Давайте сравним результат прямой операции и функции для больших чисел:

gopackage main

import (
  "fmt"
  "math"
)

func main() {
  x := 1e200
  y := 1e200

  direct := math.Sqrt(x*x + y*y)
  hypot := math.Hypot(x, y)

  fmt.Println("Прямое вычисление:", direct)
  fmt.Println("math.Hypot:", hypot)
}

Результат выполнения кода:

go"Прямое вычисление: +Inf"
"math.Hypot: 1.414213562373095e+200"

Пример

Функция math.Hypot также может использоваться для вычисления расстояния между двумя точками в двумерном пространстве:

gopackage main

import (
  "fmt"
  "math"
)

func main() {
  x1, y1 := 0.0, 0.0
  x2, y2 := 5.0, 5.0

  dx := x2 - x1
  dy := y2 - y1

  distance := math.Hypot(dx, dy)
  fmt.Println(distance)
}

Результат выполнения кода:

go7.0710678118654755

Смотрите также

  • функцию math.Sqrt,
    которая вычисляет квадратный корень числа
  • функцию math.Pow,
    которая возводит число в указанную степень
  • функцию math.Abs,
    которая возвращает абсолютное значение числа
  • функцию math.Max,
    которая возвращает большее из двух чисел