1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
/* unfl.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 a = 69069U, c = 244045795U;
static unsigned int s, h, sbuf[256];
double unfl(void)
{
int i;
i = (int)(s >> 24);
s = sbuf[i];
h = a * h + c;
sbuf[i] = h;
return s * 2.328306436538696e-10;
}
void setunfl(unsigned int k)
{
int j;
for (h = k, j = 0; j <= 256; ++j) {
h = a * h + c;
if (j < 256)
sbuf[j] = h;
else
s = h;
}
}
|