You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

drotg.f 1.9 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. *> \brief \b DROTG
  2. *
  3. * =========== DOCUMENTATION ===========
  4. *
  5. * Online html documentation available at
  6. * http://www.netlib.org/lapack/explore-html/
  7. *
  8. * Definition:
  9. * ===========
  10. *
  11. * SUBROUTINE DROTG(DA,DB,C,S)
  12. *
  13. * .. Scalar Arguments ..
  14. * DOUBLE PRECISION C,DA,DB,S
  15. * ..
  16. *
  17. *
  18. *> \par Purpose:
  19. * =============
  20. *>
  21. *> \verbatim
  22. *>
  23. *> DROTG construct givens plane rotation.
  24. *> \endverbatim
  25. *
  26. * Authors:
  27. * ========
  28. *
  29. *> \author Univ. of Tennessee
  30. *> \author Univ. of California Berkeley
  31. *> \author Univ. of Colorado Denver
  32. *> \author NAG Ltd.
  33. *
  34. *> \date November 2011
  35. *
  36. *> \ingroup double_blas_level1
  37. *
  38. *> \par Further Details:
  39. * =====================
  40. *>
  41. *> \verbatim
  42. *>
  43. *> jack dongarra, linpack, 3/11/78.
  44. *> \endverbatim
  45. *>
  46. * =====================================================================
  47. SUBROUTINE DROTG(DA,DB,C,S)
  48. *
  49. * -- Reference BLAS level1 routine (version 3.4.0) --
  50. * -- Reference BLAS is a software package provided by Univ. of Tennessee, --
  51. * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
  52. * November 2011
  53. *
  54. * .. Scalar Arguments ..
  55. DOUBLE PRECISION C,DA,DB,S
  56. * ..
  57. *
  58. * =====================================================================
  59. *
  60. * .. Local Scalars ..
  61. DOUBLE PRECISION R,ROE,SCALE,Z
  62. * ..
  63. * .. Intrinsic Functions ..
  64. INTRINSIC DABS,DSIGN,DSQRT
  65. * ..
  66. ROE = DB
  67. IF (DABS(DA).GT.DABS(DB)) ROE = DA
  68. SCALE = DABS(DA) + DABS(DB)
  69. IF (SCALE.EQ.0.0d0) THEN
  70. C = 1.0d0
  71. S = 0.0d0
  72. R = 0.0d0
  73. Z = 0.0d0
  74. ELSE
  75. R = SCALE*DSQRT((DA/SCALE)**2+ (DB/SCALE)**2)
  76. R = DSIGN(1.0d0,ROE)*R
  77. C = DA/R
  78. S = DB/R
  79. Z = 1.0d0
  80. IF (DABS(DA).GT.DABS(DB)) Z = S
  81. IF (DABS(DB).GE.DABS(DA) .AND. C.NE.0.0d0) Z = 1.0d0/C
  82. END IF
  83. DA = R
  84. DB = Z
  85. RETURN
  86. END