/* Test of rounding to nearest, breaking ties away from zero.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007-2008 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
/* Get the two reference implementations of round under the names
round_reference1 and round_reference2.
-
+
round.c will #include <config.h> for us. */
#define FLOOR_BASED_ROUND round_reference1
#define FLOOR_FREE_ROUND round_reference2
#ifdef USE_LONG_DOUBLE
# error Long double not supported.
#elif ! defined USE_FLOAT
-# include "isnan.h"
-# define ISNAN isnan
+# include "isnand-nolibm.h"
+# define ISNAN isnand
# define FUNCTION "round"
# define DOUBLE_UINT uint64_t
# define DOUBLE_BITS 64
# define NUM_HIGHBITS 13
# define NUM_LOWBITS 4
#else /* defined USE_FLOAT */
-# include "isnanf.h"
+# include "isnanf-nolibm.h"
# define ISNAN isnanf
# define FUNCTION "roundf"
# define DOUBLE_UINT uint32_t
{
if (ISNAN (y0) ? ISNAN (y1) : y0 == y1)
return true;
- else
+ else
{
fprintf (stderr, "%s: "FUNCTION"(%g(%a)) = %g(%a) or %g(%a)?\n",
message, x, x, y0, y0, y1, y1);
{
DOUBLE ref1 = round_reference1 (x);
DOUBLE ref2 = round_reference2 (x);
- DOUBLE result = round (x);
-
+ DOUBLE result = ROUND (x);
+
/* If the reference implementations disagree, bail out immediately. */
- if (!equal ("reference implementations disagree", x, ref1, ref2))
+ if (!equal ("reference implementations disagree", x, ref1, ref2))
exit (EXIT_FAILURE);
/* If the actual implementation is wrong, return an error code. */