# Angle difference between two bearings proc getdiff(b1, b2) is r := (b2 - b1) symmod 360.0; if r >= 180.0 then r -:= 360.0 fi; if r < -180.0 then r +:= 360.0 fi; return r end; proc printrow(b1, b2) is printf("%14.6f %14.6f %14.6f\n", b1, b2, getdiff(b1, b2)) end; scope print("Input in -180 to +180 range"); print(" Bearing 1 Bearing 2 Difference"); printrow(20.0, 45.0); printrow(-45.0, 45.0); printrow(-85.0, 90.0); printrow(-95.0, 90.0); printrow(-45.0, 125.0); printrow(-45.0, 145.0); printrow(-45.0, 125.0); printrow(-45.0, 145.0); printrow(29.4803, -88.6381); printrow(-78.3251, -159.036); print(); print("Input in wider range"); print(" Bearing 1 Bearing 2 Difference"); printrow(-70099.74233810938, 29840.67437876723); printrow(-165313.6666297357, 33693.9894517456); printrow(1174.8380510598456, -154146.66490124757); printrow(60175.77306795546, 42213.07192354373) epocs