Beispiel #1
0
static void
test_nan_inf_zero (void)
{
  mpfr_ptr val;
  int sign;
  int kind;

  reset_stack ();

  val = new_mpfr (MPFR_PREC_MIN);
  mpfr_set_nan (val);
  kind = (mpfr_custom_get_kind) (val);
  if (kind != MPFR_NAN_KIND)
    {
      printf ("mpfr_custom_get_kind error: ");
      mpfr_dump (val);
      printf (" is kind %d instead of %d\n", kind, (int) MPFR_NAN_KIND);
      exit (1);
    }

  val = new_nan (MPFR_PREC_MIN);
  if (!mpfr_nan_p(val))
    {
      printf ("Error: mpfr_custom_init_set doesn't set NAN mpfr.\n");
      exit (1);
    }

  val = new_inf (MPFR_PREC_MIN);
  if (!mpfr_inf_p(val) || mpfr_sgn(val) >= 0)
    {
      printf ("Error: mpfr_custom_init_set doesn't set -INF mpfr.\n");
      exit (1);
    }

  sign = 1;
  mpfr_set_inf (val, sign);
  kind = (mpfr_custom_get_kind) (val);
  if ((ABS (kind) != MPFR_INF_KIND) || (SIGN (kind) != SIGN (sign)))
    {
      printf ("mpfr_custom_get_kind error: ");
      mpfr_dump (val);
      printf (" is kind %d instead of %d\n", kind, (int) MPFR_INF_KIND);
      printf (" have sign %d instead of %d\n", SIGN (kind), SIGN (sign));
      exit (1);
    }

  sign = -1;
  mpfr_set_zero (val, sign);
  kind = (mpfr_custom_get_kind) (val);
  if ((ABS (kind) != MPFR_ZERO_KIND) || (SIGN (kind) != SIGN (sign)))
    {
      printf ("mpfr_custom_get_kind error: ");
      mpfr_dump (val);
      printf (" is kind %d instead of %d\n", kind, (int) MPFR_ZERO_KIND);
      printf (" have sign %d instead of %d\n", SIGN (kind), SIGN (sign));
      exit (1);
    }

  reset_stack ();
}
Beispiel #2
0
int main(void)
{
	init_ident();
	init_tarval_1();
	init_irprog_1();
	init_mode();
	init_tarval_2();

	double d_nan = 0.0/0.0;
	assert (d_nan != d_nan);

	d_nan = new_nan(1234);
	assert (d_nan != d_nan);
	assert (nan_payload(d_nan) == 1234);

	d_nan *= 2;
	assert (d_nan != d_nan);

	ir_tarval* tv_nan = new_tarval_from_double(d_nan, mode_D);
	assert (tarval_is_nan(tv_nan));
	d_nan = get_tarval_double(tv_nan);
	assert (d_nan != d_nan);
	assert (nan_payload(d_nan) == 1234);

	tv_nan = new_tarval_nan(mode_D, false, NULL);
	assert (tarval_is_nan(tv_nan));
	d_nan = get_tarval_double(tv_nan);
	assert (d_nan != d_nan);

	d_nan = new_nan(0);
	assert (nan_payload(d_nan) == 0);
	assert (d_nan != d_nan);
	tv_nan = new_tarval_from_double(d_nan, mode_D);
	assert (tarval_is_nan(tv_nan));
	d_nan = get_tarval_double(tv_nan);
	assert (d_nan != d_nan);
	assert (nan_payload(d_nan) == 0);

	finish_tarval();
	finish_mode();
	finish_ident();
	return 0;
}