v

Зеркало из https://github.com/vlang/v
Форк
0
/
hypot.v 
25 строк · 526.0 Байт
1
module math
2

3
// hypot returns the hypotenuse of the triangle give two sides
4
pub fn hypot(x f64, y f64) f64 {
5
	if is_inf(x, 0) || is_inf(y, 0) {
6
		return inf(1)
7
	}
8
	if is_nan(x) || is_nan(y) {
9
		return nan()
10
	}
11
	mut result := 0.0
12
	if x != 0.0 || y != 0.0 {
13
		abs_x := abs(x)
14
		abs_y := abs(y)
15
		cmin, cmax := minmax(abs_x, abs_y)
16
		rat := cmin / cmax
17
		root_term := sqrt(1.0 + rat * rat)
18
		if cmax < max_f64 / root_term {
19
			result = cmax * root_term
20
		} else {
21
			panic('overflow in hypot_e function')
22
		}
23
	}
24
	return result
25
}
26

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.