         hash = ((hash << 5) &+ hash) &+ self.longitude.hashValue
         return hash
     }
+    #endif
 }
 
 extension Coordinate: CustomStringConvertible {

}

/// A coordinate consisting of latitude and longitude
public struct Coordinate {
    fileprivate static let earthRadius = Distance(6371e3)
    
    public var latitude: Degrees

    public init(_ latitude: Degrees, _ longitude: Degrees) {
        self.init(latitude: latitude, longitude: longitude)
    }
    
    #if swift(>=4.1)
    // Use default implementation of Equatable and Hashable
    #else
    public static func ==(lhs: Coordinate, rhs: Coordinate) -> Bool {
        return lhs.latitude == rhs.latitude && lhs.longitude == rhs.longitude
    }
    
    public var hashValue: Int {
        // DJB Hash Function
        var hash = 5381
