mirror of
https://github.com/DJDoubleD/refreezer.git
synced 2026-01-15 16:32:54 -03:00
20 lines
322 B
Dart
20 lines
322 B
Dart
import 'dart:math';
|
|
|
|
/// Computes `sqrt(x^2 + y^2)` without under/overflow
|
|
num hypot(num x, num y) {
|
|
var first = x.abs();
|
|
var second = y.abs();
|
|
|
|
if (y > x) {
|
|
first = y.abs();
|
|
second = x.abs();
|
|
}
|
|
|
|
if (first == 0.0) {
|
|
return second;
|
|
}
|
|
|
|
final t = second / first;
|
|
return first * sqrt(1 + t * t);
|
|
}
|