Пример #1
0
float64
runtime·Inf(int32 sign)
{
	if(sign >= 0)
		return runtime·float64frombits(uvinf);
	else
		return runtime·float64frombits(uvneginf);
}
Пример #2
0
float64
runtime·modf(float64 d, float64 *ip)
{
	float64 dd;
	uint64 x;
	int32 e;

	if(d < 1) {
		if(d < 0) {
			d = runtime·modf(-d, ip);
			*ip = -*ip;
			return -d;
		}
		*ip = 0;
		return d;
	}

	x = runtime·float64tobits(d);
	e = (int32)((x >> SHIFT) & MASK) - BIAS;

	/*
	 * Keep the top 11+e bits; clear the rest.
	 */
	if(e <= 64-11)
		x &= ~(((uint64)1 << (64LL-11LL-e))-1);
	dd = runtime·float64frombits(x);
	*ip = dd;
	return d - dd;
}
Пример #3
0
int
main (void)
{
  double a = float64frombits (2);

  if (sqrt (a) != 3.1434555694052576e-162)
    __builtin_abort ();

  return 0;
}
Пример #4
0
float64
runtime·frexp(float64 d, int32 *ep)
{
	uint64 x;

	if(d == 0) {
		*ep = 0;
		return 0;
	}
	x = runtime·float64tobits(d);
	*ep = (int32)((x >> SHIFT) & MASK) - BIAS;
	x &= ~((uint64)MASK << SHIFT);
	x |= (uint64)BIAS << SHIFT;
	return runtime·float64frombits(x);
}
Пример #5
0
float64
runtime·ldexp(float64 d, int32 e)
{
	uint64 x;

	if(d == 0)
		return 0;
	x = runtime·float64tobits(d);
	e += (int32)(x >> SHIFT) & MASK;
	if(e <= 0)
		return 0;	/* underflow */
	if(e >= MASK){		/* overflow */
		if(d < 0)
			return runtime·Inf(-1);
		return runtime·Inf(1);
	}
	x &= ~((uint64)MASK << SHIFT);
	x |= (uint64)e << SHIFT;
	return runtime·float64frombits(x);
}
Пример #6
0
float64
runtime·NaN(void)
{
	return runtime·float64frombits(uvnan);
}