INCLUDE "H6:REALMATH.ACT" INT FUNC AngleI(INT a1,a2) INT r r=a2-a1 WHILE r>180 DO r==-360 OD WHILE r<-180 DO r==+360 OD RETURN (r) PROC TestI(INT a1,a2) INT r r=AngleI(a1,a2) PrintF("%I .. %I = %I%E",a1,a2,r) RETURN PROC AngleR(REAL POINTER r1,r2,r) REAL tmp,r180,rm180,r360 ValR("180",r180) ValR("-180",rm180) ValR("360",r360) RealSub(r2,r1,r) WHILE RealGreaterOrEqual(r,r180) DO RealSub(r,r360,tmp) RealAssign(tmp,r) OD WHILE RealGreaterOrEqual(rm180,r) DO RealAdd(r,r360,tmp) RealAssign(tmp,r) OD RETURN PROC TestR(CHAR ARRAY s1,s2) REAL r1,r2,r ValR(s1,r1) ValR(s2,r2) AngleR(r1,r2,r) PrintR(r1) Print(" .. ") PrintR(r2) Print(" = ") PrintRE(r) RETURN PROC Main() Put(125) PutE() ;clear screen TestI(20,45) TestI(-45,45) TestI(-85,90) TestI(-95,90) TestI(-45,125) TestI(-45,145) TestR("29.4803","-88.6381") TestR("-78.3251","-159.036") TestR("-70099.74233810938","29840.67437876723") TestR("-165313.6666297357","33693.9894517456") TestR("1174.8380510598456","-154146.66490124757") TestR("60175.77306795546","42213.07192354373") RETURN