dsindg.f 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. *DECK DSINDG
  2. DOUBLE PRECISION FUNCTION DSINDG (X)
  3. C***BEGIN PROLOGUE DSINDG
  4. C***PURPOSE Compute the sine of an argument in degrees.
  5. C***LIBRARY SLATEC (FNLIB)
  6. C***CATEGORY C4A
  7. C***TYPE DOUBLE PRECISION (SINDG-S, DSINDG-D)
  8. C***KEYWORDS DEGREES, ELEMENTARY FUNCTIONS, FNLIB, SINE, TRIGONOMETRIC
  9. C***AUTHOR Fullerton, W., (LANL)
  10. C***DESCRIPTION
  11. C
  12. C DSINDG(X) calculates the double precision sine for double
  13. C precision argument X where X is in degrees.
  14. C
  15. C***REFERENCES (NONE)
  16. C***ROUTINES CALLED (NONE)
  17. C***REVISION HISTORY (YYMMDD)
  18. C 770601 DATE WRITTEN
  19. C 890531 Changed all specific intrinsics to generic. (WRB)
  20. C 890531 REVISION DATE from Version 3.2
  21. C 891214 Prologue converted to Version 4.0 format. (BAB)
  22. C***END PROLOGUE DSINDG
  23. DOUBLE PRECISION X, RADDEG
  24. SAVE RADDEG
  25. DATA RADDEG / 0.0174532925 1994329576 9236907684 886 D0 /
  26. C***FIRST EXECUTABLE STATEMENT DSINDG
  27. DSINDG = SIN (RADDEG*X)
  28. C
  29. IF (MOD(X,90.D0).NE.0.D0) RETURN
  30. N = ABS(X)/90.D0 + 0.5D0
  31. N = MOD (N, 2)
  32. IF (N.EQ.0) DSINDG = 0.D0
  33. IF (N.EQ.1) DSINDG = SIGN (1.0D0, DSINDG)
  34. C
  35. RETURN
  36. END