/*  unfl2.c    CCMATH mathematics library source code.
 *
 *  Copyright (C)  2000   Daniel A. Atkinson    All rights reserved.
 *  This code may be redistributed under the terms of the GNU library
 *  public license (LGPL). ( See the lgpl.license file for details.)
 * ------------------------------------------------------------------------
 */
static unsigned int s,h,ss[256];
unsigned int lranb(unsigned int);
double unfl2()
{ register int i; unsigned int c;
  s=lranb(s);
  h=h*69069U+4098479U;
  i=(h>>24); c=ss[i]; ss[i]=s;
  return (double)c*4.656612875245797e-10;
}
void setunfl2(unsigned int sa)
{ int k;
  for(s=sa,k=0; k<=256 ;++k){
    s=lranb(s);
    if(k<256) ss[k]=s; else h=s;
   }
}


syntax highlighted by Code2HTML, v. 0.9.1