#include "haversine.h" #include #define PI 3.14159265358979323845 #define SQUARE(X) ((X) * (X)) double radians(double degrees); double haversine_of_degrees(double x0, double y0, double x1, double y1, double radius) { double dy = radians(y1 - y0); double dx = radians(x1 - x0); y0 = radians(y0); y1 = radians(y1); double root_term = SQUARE(sin(dy / 2.0)) + cos(y0) * cos(y1) * SQUARE(sin(dx / 2.0)); double result = 2.0 * radius * asin(sqrt(root_term)); return result; } double radians(double degrees) { return (degrees * PI) / 180.0; }