1 #include <math.h> 2 #include <errno.h> 3 /* 4 atan2 discovers what quadrant the angle 5 is in and calls atan. 6 */ 7 #define pio2 1.5707963267948966192313217 8 #define pi 3.1415926535897932384626434; 9 10 double atan2(double arg1,double arg2)11atan2(double arg1, double arg2) 12 { 13 14 if(arg1 == 0.0 && arg2 == 0.0){ 15 errno = EDOM; 16 return 0.0; 17 } 18 if(arg1+arg2 == arg1) { 19 if(arg1 >= 0) 20 return pio2; 21 return -pio2; 22 } 23 arg1 = atan(arg1/arg2); 24 if(arg2 < 0) { 25 if(arg1 <= 0) 26 return arg1 + pi; 27 return arg1 - pi; 28 } 29 return arg1; 30 } 31