catan2.f 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. *DECK CATAN2
  2. COMPLEX FUNCTION CATAN2 (CSN, CCS)
  3. C***BEGIN PROLOGUE CATAN2
  4. C***PURPOSE Compute the complex arc tangent in the proper quadrant.
  5. C***LIBRARY SLATEC (FNLIB)
  6. C***CATEGORY C4A
  7. C***TYPE COMPLEX (CATAN2-C)
  8. C***KEYWORDS ARC TANGENT, ELEMENTARY FUNCTIONS, FNLIB, POLAR ANGEL,
  9. C QUADRANT, TRIGONOMETRIC
  10. C***AUTHOR Fullerton, W., (LANL)
  11. C***DESCRIPTION
  12. C
  13. C CATAN2(CSN,CCS) calculates the complex trigonometric arc
  14. C tangent of the ratio CSN/CCS and returns a result whose real
  15. C part is in the correct quadrant (within a multiple of 2*PI). The
  16. C result is in units of radians and the real part is between -PI
  17. C and +PI.
  18. C
  19. C***REFERENCES (NONE)
  20. C***ROUTINES CALLED CATAN, XERMSG
  21. C***REVISION HISTORY (YYMMDD)
  22. C 770401 DATE WRITTEN
  23. C 890531 Changed all specific intrinsics to generic. (WRB)
  24. C 890531 REVISION DATE from Version 3.2
  25. C 891214 Prologue converted to Version 4.0 format. (BAB)
  26. C 900315 CALLs to XERROR changed to CALLs to XERMSG. (THJ)
  27. C 900326 Removed duplicate information from DESCRIPTION section.
  28. C (WRB)
  29. C***END PROLOGUE CATAN2
  30. COMPLEX CSN, CCS, CATAN
  31. SAVE PI
  32. DATA PI / 3.1415926535 8979323846E0 /
  33. C***FIRST EXECUTABLE STATEMENT CATAN2
  34. IF (ABS(CCS).EQ.0.) GO TO 10
  35. C
  36. CATAN2 = CATAN (CSN/CCS)
  37. IF (REAL(CCS).LT.0.) CATAN2 = CATAN2 + PI
  38. IF (REAL(CATAN2).GT.PI) CATAN2 = CATAN2 - 2.0*PI
  39. RETURN
  40. C
  41. 10 IF (ABS(CSN) .EQ. 0.) CALL XERMSG ('SLATEC', 'CATAN2',
  42. + 'CALLED WITH BOTH ARGUMENTS ZERO', 1, 2)
  43. C
  44. CATAN2 = CMPLX (SIGN(0.5*PI,REAL(CSN)), 0.0)
  45. C
  46. RETURN
  47. END