unfl.c 655 B

1234567891011121314151617181920212223
  1. /* unfl.c CCMATH mathematics library source code.
  2. *
  3. * Copyright (C) 2000 Daniel A. Atkinson All rights reserved.
  4. * This code may be redistributed under the terms of the GNU library
  5. * public license (LGPL). ( See the lgpl.license file for details.)
  6. * ------------------------------------------------------------------------
  7. */
  8. static unsigned int a=69069U,c=244045795U;
  9. static unsigned int s,h,sbuf[256];
  10. double unfl()
  11. { int i;
  12. i=(int)(s>>24); s=sbuf[i];
  13. h=a*h+c; sbuf[i]=h;
  14. return s*2.328306436538696e-10;
  15. }
  16. void setunfl(unsigned int k)
  17. { int j;
  18. for(h=k,j=0; j<=256 ;++j){
  19. h=a*h+c;
  20. if(j<256) sbuf[j]=h; else s=h;
  21. }
  22. }