コード例 #1
0
ファイル: tset_float128.c プロジェクト: Canar/mpfr
int
main (int argc, char *argv[])
{
#ifdef WITH_FPU_CONTROL
  fpu_control_t cw;

  /* cw=895 (0x037f): round to double extended precision
     cw=639 (0x027f): round to double precision
     cw=127 (0x007f): round to single precision */
  if (argc > 1)
    {
      cw = strtol(argv[1], NULL, 0);
      printf ("FPU control word: 0x%x\n", (unsigned int) cw);
      _FPU_SETCW (cw);
    }
#endif

  tests_start_mpfr ();

  check_special ();

  check_large ();

  check_small ();

  tests_end_mpfr ();

  return 0;
}
コード例 #2
0
ファイル: tconst_pi.c プロジェクト: BrianGladman/mpfr
int
main (int argc, char *argv[])
{
  mpfr_t x;
  mpfr_prec_t p;
  mpfr_rnd_t rnd;

  tests_start_mpfr ();

  p = 53;
  if (argc > 1)
    {
      long a = atol (argv[1]);
      if (MPFR_PREC_COND (a))
        p = a;
    }

  rnd = (argc > 2) ? (mpfr_rnd_t) atoi(argv[2]) : MPFR_RNDZ;

  mpfr_init2 (x, p);
  mpfr_const_pi (x, rnd);
  if (argc >= 2)
    {
      if (argc < 4 || atoi (argv[3]) != 0)
        {
          printf ("Pi=");
          mpfr_out_str (stdout, 10, 0, x, rnd);
          puts ("");
        }
    }
  else if (mpfr_cmp_str1 (x, "3.141592653589793116") )
    {
      printf ("mpfr_const_pi failed for prec=53\n");
      mpfr_out_str (stdout, 10, 0, x, MPFR_RNDN); putchar('\n');
      exit (1);
    }

  mpfr_set_prec (x, 32);
  mpfr_const_pi (x, MPFR_RNDN);
  if (mpfr_cmp_str1 (x, "3.141592653468251") )
    {
      printf ("mpfr_const_pi failed for prec=32\n");
      exit (1);
    }

  mpfr_clear (x);

  bug20091030 ();

  check_large ();

  test_generic (MPFR_PREC_MIN, 200, 1);

  RUN_PTHREAD_TEST();

  tests_end_mpfr ();

  return 0;
}
コード例 #3
0
ファイル: tai.c プロジェクト: SESA/EbbRT-mpfr
int
main (int argc, char *argv[])
{
  tests_start_mpfr ();

  check_large ();
  check_zero ();

  test_generic (2, 100, 5);

  tests_end_mpfr ();
  return 0;
}
コード例 #4
0
ファイル: tset_z.c プロジェクト: BreakawayConsulting/mpfr
int
main (int argc, char *argv[])
{
  long j;

  tests_start_mpfr ();

  check_large ();
  check (0, MPFR_RNDN);
  for (j = 0; j < 200000; j++)
    check (randlimb () & LONG_MAX, RND_RAND ());
  check0 ();

  tests_end_mpfr ();

  return 0;
}
コード例 #5
0
ファイル: tagm.c プロジェクト: Canar/mpfr
int
main (int argc, char* argv[])
{
  tests_start_mpfr ();

  check_special ();

  check_large ();
  check4 ("2.0", "1.0", MPFR_RNDN, "1.456791031046906869", -1);
  check4 ("6.0", "4.0", MPFR_RNDN, "4.949360872472608925", 1);
  check4 ("62.0", "61.0", MPFR_RNDN, "61.498983718845075902", -1);
  check4 ("0.5", "1.0", MPFR_RNDN, "0.72839551552345343459", -1);
  check4 ("1.0", "2.0", MPFR_RNDN, "1.456791031046906869", -1);
  check4 ("234375765.0", "234375000.0", MPFR_RNDN, "234375382.49984394025", 1);
  check4 ("8.0", "1.0", MPFR_RNDU, "3.61575617759736274873", 1);
  check4 ("1.0", "44.0", MPFR_RNDU, "13.3658354512981243907", 1);
  check4 ("1.0", "3.7252902984619140625e-9", MPFR_RNDU,
          "0.07553933569711989657765", 1);
  test_generic (2, 300, 17);

  tests_end_mpfr ();
  return 0;
}
コード例 #6
0
ファイル: tagm.c プロジェクト: 119/aircam-openwrt
int
main (int argc, char* argv[])
{
  tests_start_mpfr ();

  check_nans ();

  check_large ();
  check4 ("2.0", "1.0", MPFR_RNDN, "1.45679103104690677029");
  check4 ("6.0", "4.0", MPFR_RNDN, "4.94936087247260925182");
  check4 ("62.0", "61.0", MPFR_RNDN, "6.14989837188450749750e+01");
  check4 ("0.5", "1.0", MPFR_RNDN, "7.28395515523453385143e-01");
  check4 ("1.0", "2.0", MPFR_RNDN, "1.45679103104690677029");
  check4 ("234375765.0", "234375000.0", MPFR_RNDN, "2.3437538249984395504e8");
  check4 ("8.0", "1.0", MPFR_RNDU, "3.615756177597362786");
  check4 ("1.0", "44.0", MPFR_RNDU, "1.33658354512981247808e1");
  check4 ("1.0", "3.7252902984619140625e-9", MPFR_RNDU,
          "7.55393356971199025907e-02");
  test_generic (2, 300, 17);

  tests_end_mpfr ();
  return 0;
}
コード例 #7
0
ファイル: tconst_log2.c プロジェクト: SESA/EbbRT-mpfr
int
main (int argc, char *argv[])
{
  mpfr_t x;
  int p;
  mpfr_rnd_t rnd;

  tests_start_mpfr ();

  p = (argc>1) ? atoi(argv[1]) : 53;
  rnd = (argc>2) ? (mpfr_rnd_t) atoi(argv[2]) : MPFR_RNDZ;

  mpfr_init (x);

  check (2, 1000);

  /* check precision of 2 bits */
  mpfr_set_prec (x, 2);
  mpfr_const_log2 (x, MPFR_RNDN);
  if (mpfr_cmp_ui_2exp(x, 3, -2)) /* 3*2^-2 */
    {
      printf ("mpfr_const_log2 failed for prec=2, rnd=MPFR_RNDN\n"
              "expected 0.75, got ");
      mpfr_out_str(stdout, 10, 0, x, MPFR_RNDN);
      putchar('\n');
      exit (1);
    }

  if (argc>=2)
    {
      mpfr_set_prec (x, p);
      mpfr_const_log2 (x, rnd);
      printf ("log(2)=");
      mpfr_out_str (stdout, 10, 0, x, rnd);
      puts ("");
    }

  mpfr_set_prec (x, 53);
  mpfr_const_log2 (x, MPFR_RNDZ);
  if (mpfr_cmp_str1 (x, "6.9314718055994530941e-1") )
    {
      printf ("mpfr_const_log2 failed for prec=53\n");
      exit (1);
    }

  mpfr_set_prec (x, 32);
  mpfr_const_log2 (x, MPFR_RNDN);
  if (mpfr_cmp_str1 (x, "0.69314718060195446"))
    {
      printf ("mpfr_const_log2 failed for prec=32\n");
      exit (1);
    }

  mpfr_clear(x);

  check_large();
  check_cache ();

  test_generic (2, 200, 1);

  tests_end_mpfr ();
  return 0;
}
コード例 #8
0
ファイル: texp.c プロジェクト: jozip/xcl
int
main (int argc, char *argv[])
{
    tests_start_mpfr ();

    if (argc > 1)
        check_large ();

    check_inexact ();
    check_special ();

    test_generic (2, 100, 100);

    compare_exp2_exp3 (20, 1000);
    check_worst_cases();
    check3("0.0", MPFR_RNDU, "1.0");
    check3("-1e-170", MPFR_RNDU, "1.0");
    check3("-1e-170", MPFR_RNDN, "1.0");
    check3("-8.88024741073346941839e-17", MPFR_RNDU, "1.0");
    check3("8.70772839244701057915e-01", MPFR_RNDN, "2.38875626491680437269");
    check3("1.0", MPFR_RNDN, "2.71828182845904509080");
    check3("-3.42135637628104173534e-07", MPFR_RNDZ, "0.999999657864420798958");
    /* worst case for argument reduction, very near from 5*log(2),
       thanks to Jean-Michel Muller  */
    check3("3.4657359027997265421", MPFR_RNDN, "32.0");
    check3("3.4657359027997265421", MPFR_RNDU, "32.0");
    check3("3.4657359027997265421", MPFR_RNDD, "31.999999999999996447");
    check3("2.26523754332090625496e+01", MPFR_RNDD, "6.8833785261699581146e9");
    check3("1.31478962104089092122e+01", MPFR_RNDZ, "5.12930793917860137299e+05");
    check3("4.25637507920002378103e-01", MPFR_RNDU, "1.53056585656161181497e+00");
    check3("6.26551618962329307459e-16", MPFR_RNDU, "1.00000000000000066613e+00");
    check3("-3.35589513871216568383e-03",MPFR_RNDD, "9.96649729583626853291e-01");
    check3("1.95151388850007272424e+01", MPFR_RNDU, "2.98756340674767792225e+08");
    check3("2.45045953503350730784e+01", MPFR_RNDN, "4.38743344916128387451e+10");
    check3("2.58165606081678085104e+01", MPFR_RNDD, "1.62925781879432281494e+11");
    check3("-2.36539020084338638128e+01",MPFR_RNDZ, "5.33630792749924762447e-11");
    check3("2.39211946135858077866e+01", MPFR_RNDU, "2.44817704330214385986e+10");
    check3("-2.78190533055889162029e+01",MPFR_RNDZ, "8.2858803483596879512e-13");
    check3("2.64028186174889789584e+01", MPFR_RNDD, "2.9281844652878973388e11");
    check3("2.92086338843268329413e+01", MPFR_RNDZ, "4.8433797301907177734e12");
    check3("-2.46355324071459982349e+01",MPFR_RNDZ, "1.9995129297760994791e-11");
    check3("-2.23509444608605427618e+01",MPFR_RNDZ, "1.9638492867489702307e-10");
    check3("-2.41175390197331687148e+01",MPFR_RNDD, "3.3564940885530624592e-11");
    check3("2.46363885231578088053e+01", MPFR_RNDU, "5.0055014282693267822e10");
    check3("111.1263531080090984914932050742208957672119140625", MPFR_RNDN, "1.8262572323517295459e48");
    check3("-3.56196340354684821250e+02",MPFR_RNDN, "2.0225297096141478156e-155");
    check3("6.59678273772710895173e+02", MPFR_RNDU, "3.1234469273830195529e286");
    check3("5.13772529701934331570e+02", MPFR_RNDD, "1.3445427121297197752e223");
    check3("3.57430211008718345056e+02", MPFR_RNDD, "1.6981197246857298443e155");
    check3("3.82001814471465536371e+02", MPFR_RNDU, "7.9667300591087367805e165");
    check3("5.92396038219384422518e+02", MPFR_RNDD, "1.880747529554661989e257");
    check3("-5.02678550462488090034e+02",MPFR_RNDU, "4.8919201895446217839e-219");
    check3("5.30015757134837031117e+02", MPFR_RNDD, "1.5237672861171573939e230");
    check3("5.16239362447650933063e+02", MPFR_RNDZ, "1.5845518406744492105e224");
    check3("6.00812634798592370977e-01", MPFR_RNDN, "1.823600119339019443");
    check_exp10 ();

    bug20080731 ();

    overflowed_exp0 ();
    underflow ();

    data_check ("data/exp", mpfr_exp, "mpfr_exp");
    bad_cases (mpfr_exp, mpfr_log, "mpfr_exp", 0, -256, 255, 4, 128, 800, 50);

    tests_end_mpfr ();
    return 0;
}
コード例 #9
0
ファイル: tget_str.c プロジェクト: BrianGladman/mpfr
int
main (int argc, char *argv[])
{
  int b;
  mpfr_t x;
  mpfr_rnd_t r;
  char s[MAX_DIGITS + 2];
  mpfr_exp_t e, f;
  size_t m;
  mpfr_prec_t p;
  int i;

  tests_start_mpfr ();

  check_small ();

  check_special (2, 2);
  for (i = 0; i < ITER; i++)
    {
      p = 2 + (randlimb () % (MAX_DIGITS - 1));
      b = 2 + (randlimb () % 35);
      check_special (b, p);
    }

  mpfr_init2 (x, MAX_DIGITS);
  for (i = 0; i < ITER; i++)
    {
      m = 2 + (randlimb () % (MAX_DIGITS - 1));
      mpfr_urandomb (x, RANDS);
      e = (mpfr_exp_t) (randlimb () % 21) - 10;
      if (!MPFR_IS_ZERO(x))
        mpfr_set_exp (x, (e == -10) ? mpfr_get_emin () :
                      ((e == 10) ? mpfr_get_emax () : e));
      b = 2 + (randlimb () % 35);
      r = RND_RAND ();
      mpfr_get_str (s, &f, b, m, x, r);
    }
  mpfr_clear (x);

  check_large ();
  check3 ("4.059650008e-83", MPFR_RNDN, "40597");
  check3 ("-6.606499965302424244461355e233", MPFR_RNDN, "-66065");
  check3 ("-7.4", MPFR_RNDN, "-74000");
  check3 ("0.997", MPFR_RNDN, "99700");
  check3 ("-4.53063926135729747564e-308", MPFR_RNDN, "-45306");
  check3 ("2.14478198760196000000e+16", MPFR_RNDN, "21448");
  check3 ("7.02293374921793516813e-84", MPFR_RNDN, "70229");

  check3 ("-6.7274500420134077e-87", MPFR_RNDN, "-67275");
  check3 ("-6.7274500420134077e-87", MPFR_RNDZ, "-67274");
  check3 ("-6.7274500420134077e-87", MPFR_RNDU, "-67274");
  check3 ("-6.7274500420134077e-87", MPFR_RNDD, "-67275");
  check3 ("-6.7274500420134077e-87", MPFR_RNDA, "-67275");

  check3 ("6.7274500420134077e-87", MPFR_RNDN, "67275");
  check3 ("6.7274500420134077e-87", MPFR_RNDZ, "67274");
  check3 ("6.7274500420134077e-87", MPFR_RNDU, "67275");
  check3 ("6.7274500420134077e-87", MPFR_RNDD, "67274");
  check3 ("6.7274500420134077e-87", MPFR_RNDA, "67275");

  check_bug_base2k ();
  check_reduced_exprange ();

  tests_end_mpfr ();
  return 0;
}