Функция math.Hypot
Функция math.Hypot вычисляет евклидову гипотенузу,
то есть квадратный корень из суммы квадратов двух чисел.
В первый параметр передается значение катета x,
во второй параметр передается значение катета y.
Функция возвращает значение типа float64,
равное sqrt(x*x + y*y). Особенность данной
функции заключается в том, что она предотвращает
переполнение и потерю точности, которые могут возникнуть
при прямом возведении больших чисел в квадрат.
Синтаксис
math.Hypot(x, y float64) float64
Пример
Давайте вычислим гипотенузу прямоугольного треугольника с катетами 3 и 4:
package main
import (
"fmt"
"math"
)
func main() {
res := math.Hypot(3, 4)
fmt.Println(res)
}
Результат выполнения кода:
5
Пример
Функция math.Hypot особенно полезна при работе
с большими числами, где прямое вычисление может вызвать
переполнение. Давайте сравним результат прямой операции
и функции для больших чисел:
package 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)
}
Результат выполнения кода:
"Прямое вычисление: +Inf"
"math.Hypot: 1.414213562373095e+200"
Пример
Функция math.Hypot также может использоваться
для вычисления расстояния между двумя точками в двумерном
пространстве:
package 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)
}
Результат выполнения кода:
7.0710678118654755