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) = delta_lon.sin_cos();
15
16 let num = ((cos_lat2 * sin_delta_lon).powi(2)
17 + (cos_lat1 * sin_lat2 - sin_lat1 * cos_lat2 * cos_delta_lon).powi(2))
18 .sqrt();
19 let den = sin_lat1 * sin_lat2 + cos_lat1 * cos_lat2 * cos_delta_lon;
20
21 num.atan2(den)
22}