PageRenderTime 58ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/wrfv2_fire/external/fftpack/fftpack5/mcsqf1.F

http://github.com/jbeezley/wrf-fire
FORTRAN Legacy | 69 lines | 55 code | 1 blank | 13 comment | 0 complexity | 5dff657a91b8a4806f832bd4a1ed297d MD5 | raw file
Possible License(s): AGPL-1.0
  1. !CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  2. !
  3. ! FFTPACK 5.0
  4. !
  5. ! Authors: Paul N. Swarztrauber and Richard A. Valent
  6. !
  7. ! $Id: mcsqf1.f,v 1.2 2004/06/15 21:29:19 rodney Exp $
  8. !
  9. !CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  10. SUBROUTINE MCSQF1 (LOT,JUMP,N,INC,X,WSAVE,WORK,IER)
  11. DIMENSION X(INC,*) ,WSAVE(*) ,WORK(LOT,*)
  12. IER = 0
  13. LJ = (LOT-1)*JUMP+1
  14. NS2 = (N+1)/2
  15. NP2 = N+2
  16. DO 101 K=2,NS2
  17. KC = NP2-K
  18. M1 = 0
  19. DO 201 M=1,LJ,JUMP
  20. M1 = M1 + 1
  21. WORK(M1,K) = X(M,K)+X(M,KC)
  22. WORK(M1,KC) = X(M,K)-X(M,KC)
  23. 201 CONTINUE
  24. 101 END DO
  25. MODN = MOD(N,2)
  26. IF (MODN .NE. 0) GO TO 301
  27. M1 = 0
  28. DO 202 M=1,LJ,JUMP
  29. M1 = M1 + 1
  30. WORK(M1,NS2+1) = X(M,NS2+1)+X(M,NS2+1)
  31. 202 CONTINUE
  32. 301 DO 102 K=2,NS2
  33. KC = NP2-K
  34. M1 = 0
  35. DO 302 M=1,LJ,JUMP
  36. M1 = M1 + 1
  37. X(M,K) = WSAVE(K-1)*WORK(M1,KC)+WSAVE(KC-1)*WORK(M1,K)
  38. X(M,KC) = WSAVE(K-1)*WORK(M1,K) -WSAVE(KC-1)*WORK(M1,KC)
  39. 302 CONTINUE
  40. 102 END DO
  41. IF (MODN .NE. 0) GO TO 303
  42. M1 = 0
  43. DO 304 M=1,LJ,JUMP
  44. M1 = M1 + 1
  45. X(M,NS2+1) = WSAVE(NS2)*WORK(M1,NS2+1)
  46. 304 END DO
  47. 303 CONTINUE
  48. LENX = (LOT-1)*JUMP + INC*(N-1) + 1
  49. LNSV = N + INT(LOG(REAL(N))) + 4
  50. LNWK = LOT*N
  51. !
  52. CALL RFFTMF(LOT,JUMP,N,INC,X,LENX,WSAVE(N+1),LNSV,WORK,LNWK,IER1)
  53. IF (IER1 .NE. 0) THEN
  54. IER = 20
  55. CALL XERFFT ('MCSQF1',-5)
  56. GO TO 400
  57. ENDIF
  58. !
  59. DO 103 I=3,N,2
  60. DO 203 M=1,LJ,JUMP
  61. XIM1 = .5*(X(M,I-1)+X(M,I))
  62. X(M,I) = .5*(X(M,I-1)-X(M,I))
  63. X(M,I-1) = XIM1
  64. 203 CONTINUE
  65. 103 END DO
  66. 400 CONTINUE
  67. RETURN
  68. END