noise2.f
上传用户:szhypcb168
上传日期:2007-01-06
资源大小:2187k
文件大小:1k
源码类别:

语音压缩

开发平台:

Unix_Linux

  1. C==========================================================================
  2. C
  3. C ROUTINE
  4. C               noise2
  5. C
  6. C FUNCTION
  7. C
  8. C               generates gaussian noise using the polar method
  9. C SYNOPSIS
  10. C               noise2(x1,x2)
  11. C   formal 
  12. C
  13. C                       data    I/O
  14. C       name            type    type    function
  15. C       -------------------------------------------------------------------
  16. C       x1              r*4     o       a sample of noise source
  17. C       x2              r*4     o       another sample of noise source
  18. C
  19. C==========================================================================
  20. C       
  21. C USAGE
  22. C
  23. C noise2 generates two samples of a Gaussian noise
  24. C source for each call using the polar method.
  25. C
  26. C==========================================================================
  27. C
  28. C REFERENCES
  29. C
  30. C       Knuth, The Art of Programming, Volume 2
  31. C
  32. C**************************************************************************
  33. C*-
  34.         subroutine noise2(x1,x2)
  35. c
  36. implicit undefined(a-z)
  37. real x1, x2
  38.         integer random, i, j
  39.         real*4 f(2)
  40. real f1, f2, s
  41. c
  42. c f(i) are samples from a uniform distribution
  43. c in the range of 0.0 inclusive to 1.0 inclusive. 
  44. c
  45. 5       do 10 i=1,2
  46.           do 20 j=1,4
  47.             f(i)=(float(random()+32768))/65535.
  48. 20        continue
  49. 10      continue
  50.         f1=2.*f(1)-1.
  51.         f2=2.*f(2)-1.
  52.         s=f1*f1 + f2*f2
  53.         if(s.ge.1.)goto 5
  54.         s=sqrt(-2.*alog(s)/s)
  55.         x1=f1*s
  56.         x2=f2*s
  57.         return
  58.         end