1#[inline]
2pub fn fmod(x: f64, y: f64) -> f64 {
3 libm::fmod(x, y)
4}
5
6#[inline]
7pub fn vincenty_angular_separation(
8 sin_lat1: f64,
9 cos_lat1: f64,
10 sin_lat2: f64,
11 cos_lat2: f64,
12 delta_lon: f64,
13) -> f64 {
14 let (sin_delta_lon, cos_delta_lon) = libm::sincos(delta_lon);
15
16 let num = libm::sqrt(
17 (cos_lat2 * sin_delta_lon).powi(2)
18 + (cos_lat1 * sin_lat2 - sin_lat1 * cos_lat2 * cos_delta_lon).powi(2),
19 );
20 let den = sin_lat1 * sin_lat2 + cos_lat1 * cos_lat2 * cos_delta_lon;
21
22 libm::atan2(num, den)
23}