atan2.c 339 B

123456789101112131415161718192021222324
  1. #include <u.h>
  2. #include <libc.h>
  3. /*
  4. atan2 discovers what quadrant the angle
  5. is in and calls atan.
  6. */
  7. double
  8. atan2(double arg1, double arg2)
  9. {
  10. if(arg1+arg2 == arg1) {
  11. if(arg1 >= 0)
  12. return PIO2;
  13. return -PIO2;
  14. }
  15. arg1 = atan(arg1/arg2);
  16. if(arg2 < 0) {
  17. if(arg1 <= 0)
  18. return arg1 + PI;
  19. return arg1 - PI;
  20. }
  21. return arg1;
  22. }