(phixonline)-->
function tz(atom a)
-- trim trailing zeroes and decimal point
string res = sprintf("%16f",a)
for i=length(res) to 1 by -1 do
integer ch = res[i]
if ch='0' or ch='.' then
res[i] = ' '
end if
if ch!='0' then exit end if
end for
return res
end function
procedure test(atom b1, b2)
atom diff = mod(b2-b1,360)
diff -= iff(diff>180?360:0)
printf(1,"%s %s %s\n",{tz(b1),tz(b2),tz(diff)})
end procedure
puts(1," b1 b2 diff\n")
puts(1,"---------------- ---------------- ----------------\n")
test(20,45)
test(-45,45)
test(-85,90)
test(-95,90)
test(-45,125)
test(-45,145)
test(29.4803,-88.6381)
test(-78.3251,-159.036)
test(-70099.74233810938,29840.67437876723)
test(-165313.6666297357,33693.9894517456)
test(1174.8380510598456,-154146.66490124757)
test(60175.77306795546,42213.07192354373)