clock.cpp 608 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /* Convert complex z to clock form
  2. Input: push z
  3. Output: Result on stack
  4. clock(z) = mag(z) * (-1) ^ (arg(z) / pi)
  5. For example, clock(exp(i pi/3)) gives the result (-1)^(1/3)
  6. */
  7. #include "stdafx.h"
  8. #include "defs.h"
  9. void
  10. eval_clock(void)
  11. {
  12. push(cadr(p1));
  13. eval();
  14. clockform();
  15. }
  16. void
  17. clockform(void)
  18. {
  19. save();
  20. #if 1
  21. p1 = pop();
  22. push(p1);
  23. mag();
  24. push_integer(-1);
  25. push(p1);
  26. arg();
  27. push(symbol(PI));
  28. divide();
  29. power();
  30. multiply();
  31. #else
  32. p1 = pop();
  33. push(p1);
  34. mag();
  35. push(symbol(E));
  36. push(p1);
  37. arg();
  38. push(imaginaryunit);
  39. multiply();
  40. power();
  41. multiply();
  42. #endif
  43. restore();
  44. }