csroot.f 962 B

123456789101112131415161718192021222324252627282930313233
  1. *DECK CSROOT
  2. SUBROUTINE CSROOT (XR, XI, YR, YI)
  3. C***BEGIN PROLOGUE CSROOT
  4. C***SUBSIDIARY
  5. C***PURPOSE Compute the complex square root of a complex number.
  6. C***LIBRARY SLATEC
  7. C***TYPE SINGLE PRECISION (CSROOT-S)
  8. C***AUTHOR (UNKNOWN)
  9. C***DESCRIPTION
  10. C
  11. C (YR,YI) = complex sqrt(XR,XI)
  12. C
  13. C***SEE ALSO EISDOC
  14. C***ROUTINES CALLED PYTHAG
  15. C***REVISION HISTORY (YYMMDD)
  16. C 811101 DATE WRITTEN
  17. C 891214 Prologue converted to Version 4.0 format. (BAB)
  18. C 900402 Added TYPE section. (WRB)
  19. C***END PROLOGUE CSROOT
  20. REAL XR,XI,YR,YI,S,TR,TI,PYTHAG
  21. C
  22. C BRANCH CHOSEN SO THAT YR .GE. 0.0 AND SIGN(YI) .EQ. SIGN(XI)
  23. C***FIRST EXECUTABLE STATEMENT CSROOT
  24. TR = XR
  25. TI = XI
  26. S = SQRT(0.5E0*(PYTHAG(TR,TI) + ABS(TR)))
  27. IF (TR .GE. 0.0E0) YR = S
  28. IF (TI .LT. 0.0E0) S = -S
  29. IF (TR .LE. 0.0E0) YI = S
  30. IF (TR .LT. 0.0E0) YR = 0.5E0*(TI/YI)
  31. IF (TR .GT. 0.0E0) YI = 0.5E0*(TI/YR)
  32. RETURN
  33. END