def angle_diff (a1, a2) diff = (a2 - a1) % 360 diff -= 360 if diff > +180 diff end rows = [{20, 45}, {-45, 45}, {-85, 90}, {-95, 90}, {-45, 125}, {-45, 145}, {29.4803, -88.6381}, {-78.3251, -159.036}, {-70099.74233810938, 29840.67437876723}, {-165313.6666297357, 33693.9894517456}, {1174.8380510598456, -154146.66490124757}, {60175.77306795546, 42213.07192354373}].each do |b1, b2| puts "Angle difference between %12.4f and %12.4f is %9.4f°" % { b1, b2, angle_diff(b1, b2) } end