Annotation of OpenXM_contrib/gmp/mpfr/tests/reuse.c, Revision 1.1
1.1 ! ohara 1: /* Test file for in-place operations.
! 2:
! 3: Copyright 2000, 2001, 2002 Free Software Foundation.
! 4:
! 5: This file is part of the MPFR Library.
! 6:
! 7: The MPFR Library is free software; you can redistribute it and/or modify
! 8: it under the terms of the GNU Lesser General Public License as published by
! 9: the Free Software Foundation; either version 2.1 of the License, or (at your
! 10: option) any later version.
! 11:
! 12: The MPFR Library is distributed in the hope that it will be useful, but
! 13: WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
! 14: or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
! 15: License for more details.
! 16:
! 17: You should have received a copy of the GNU Lesser General Public License
! 18: along with the MPFR Library; see the file COPYING.LIB. If not, write to
! 19: the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
! 20: MA 02111-1307, USA. */
! 21:
! 22: #include <stdio.h>
! 23: #include <stdlib.h>
! 24: #include "gmp.h"
! 25: #include "mpfr.h"
! 26: #include "mpfr-impl.h"
! 27:
! 28: typedef void (*fct_t)();
! 29: fct_t testfunc;
! 30:
! 31: void test3 _PROTO ((char *, mp_prec_t, mp_rnd_t));
! 32: void test4 _PROTO ((char *, mp_prec_t, mp_rnd_t));
! 33: void test3a _PROTO ((char *, mp_prec_t, mp_rnd_t));
! 34: void test2ui _PROTO ((char *, mp_prec_t, mp_rnd_t));
! 35: void testui2 _PROTO ((char *, mp_prec_t, mp_rnd_t));
! 36: void test2 _PROTO ((char *, mp_prec_t, mp_rnd_t));
! 37: void test2a _PROTO ((char *, mp_prec_t));
! 38: int mpfr_compare _PROTO ((mpfr_t, mpfr_t));
! 39:
! 40: /* same than mpfr_cmp, but returns 0 for both NaN's */
! 41: int
! 42: mpfr_compare (mpfr_t a, mpfr_t b)
! 43: {
! 44: return (MPFR_IS_NAN(a)) ? !MPFR_IS_NAN(b) :
! 45: (MPFR_IS_NAN(b) || mpfr_cmp(a, b));
! 46: }
! 47:
! 48: void
! 49: test3 (char *foo, mp_prec_t prec, mp_rnd_t rnd)
! 50: {
! 51: mpfr_t ref1, ref2, ref3;
! 52: mpfr_t res1;
! 53: int i;
! 54:
! 55: #ifdef DEBUG
! 56: printf("checking %s\n", foo);
! 57: #endif
! 58: mpfr_init2 (ref1, prec);
! 59: mpfr_init2 (ref2, prec);
! 60: mpfr_init2 (ref3, prec);
! 61: mpfr_init2 (res1, prec);
! 62:
! 63: /* for each variable, consider each of the following 6 possibilities:
! 64: NaN, +Infinity, -Infinity, +0, -0 or a random number */
! 65: for (i=0; i<36; i++) {
! 66: if (i%6==0) mpfr_set_nan (ref2);
! 67: if (i%6==1) mpfr_set_inf (ref2, 1);
! 68: if (i%6==2) mpfr_set_inf (ref2, -1);
! 69: if (i%6==3) mpfr_set_d (ref2, 0.0, GMP_RNDN);
! 70: if (i%6==4) mpfr_set_d (ref2, -0.0, GMP_RNDN);
! 71: if (i%6==5) mpfr_random (ref2);
! 72:
! 73: if (i/6==0) mpfr_set_nan (ref3);
! 74: if (i/6==1) mpfr_set_inf (ref3, 1);
! 75: if (i/6==2) mpfr_set_inf (ref3, -1);
! 76: if (i/6==3) mpfr_set_d (ref3, 0.0, GMP_RNDN);
! 77: if (i/6==4) mpfr_set_d (ref3, -0.0, GMP_RNDN);
! 78: if (i/6==5) mpfr_random (ref3);
! 79:
! 80: /* reference call: foo(a, b, c) */
! 81: testfunc (ref1, ref2, ref3, rnd);
! 82:
! 83: /* foo(a, a, c) */
! 84: mpfr_set (res1, ref2, rnd); /* exact operation */
! 85: testfunc (res1, res1, ref3, rnd);
! 86:
! 87: if (mpfr_compare (res1, ref1)) {
! 88: fprintf (stderr, "Error for %s(a, a, c) for a=%e, c=%e\n", foo,
! 89: mpfr_get_d1 (ref2), mpfr_get_d1 (ref3));
! 90: fprintf (stderr, "expected %e, got %e\n", mpfr_get_d1 (ref1),
! 91: mpfr_get_d1 (res1));
! 92: exit (1);
! 93: }
! 94:
! 95: /* foo(a, b, a) */
! 96: mpfr_set (res1, ref3, rnd);
! 97: testfunc (res1, ref2, res1, rnd);
! 98: if (mpfr_compare (res1, ref1)) {
! 99: fprintf (stderr, "Error for %s(a, b, a) for b=%e, a=%e\n", foo,
! 100: mpfr_get_d1 (ref2), mpfr_get_d1 (ref3));
! 101: fprintf (stderr, "expected %e, got %e\n", mpfr_get_d1 (ref1),
! 102: mpfr_get_d1 (res1));
! 103: exit (1);
! 104: }
! 105:
! 106: /* foo(a, a, a) */
! 107: mpfr_set (ref3, ref2, rnd);
! 108: testfunc (ref1, ref2, ref3, rnd);
! 109: mpfr_set (res1, ref2, rnd);
! 110: testfunc (res1, res1, res1, rnd);
! 111:
! 112: if (mpfr_compare (res1, ref1)) {
! 113: fprintf (stderr, "Error for %s(a, a, a) for a=%e\n", foo,
! 114: mpfr_get_d1 (ref2));
! 115: fprintf (stderr, "expected %e, got %e\n", mpfr_get_d1 (ref1),
! 116: mpfr_get_d1 (res1));
! 117: exit (1);
! 118: }
! 119: }
! 120:
! 121: mpfr_clear (ref1);
! 122: mpfr_clear (ref2);
! 123: mpfr_clear (ref3);
! 124: mpfr_clear (res1);
! 125: }
! 126:
! 127: void
! 128: test4 (char *foo, mp_prec_t prec, mp_rnd_t rnd)
! 129: {
! 130: mpfr_t ref, op1, op2, op3;
! 131: mpfr_t res;
! 132: int i, j, k;
! 133:
! 134: #ifdef DEBUG
! 135: printf("checking %s\n", foo);
! 136: #endif
! 137: mpfr_init2 (ref, prec);
! 138: mpfr_init2 (op1, prec);
! 139: mpfr_init2 (op2, prec);
! 140: mpfr_init2 (op3, prec);
! 141: mpfr_init2 (res, prec);
! 142:
! 143: /* for each variable, consider each of the following 6 possibilities:
! 144: NaN, +Infinity, -Infinity, +0, -0 or a random number */
! 145:
! 146: for (i=0; i<6; i++)
! 147: {
! 148:
! 149: MPFR_CLEAR_FLAGS(op1);
! 150: if (i==0) mpfr_set_nan (op1);
! 151: if (i==1) mpfr_set_inf (op1, 1);
! 152: if (i==2) mpfr_set_inf (op1, -1);
! 153: if (i==3) mpfr_set_d (op1, 0.0, GMP_RNDN);
! 154: if (i==4) mpfr_set_d (op1, -0.0, GMP_RNDN);
! 155: if (i==5) mpfr_random (op1);
! 156:
! 157: for (j=0; j<6; j++)
! 158: {
! 159:
! 160: MPFR_CLEAR_FLAGS(op2);
! 161: if (j==0) mpfr_set_nan (op2);
! 162: if (j==1) mpfr_set_inf (op2, 1);
! 163: if (j==2) mpfr_set_inf (op2, -1);
! 164: if (j==3) mpfr_set_d (op2, 0.0, GMP_RNDN);
! 165: if (j==4) mpfr_set_d (op2, -0.0, GMP_RNDN);
! 166: if (j==5) mpfr_random (op2);
! 167:
! 168: for (k=0; k<6; k++)
! 169: {
! 170:
! 171: MPFR_CLEAR_FLAGS(op3);
! 172: if (k==0) mpfr_set_nan (op3);
! 173: if (k==1) mpfr_set_inf (op3, 1);
! 174: if (k==2) mpfr_set_inf (op3, -1);
! 175: if (k==3) mpfr_set_d (op3, 0.0, GMP_RNDN);
! 176: if (k==4) mpfr_set_d (op3, -0.0, GMP_RNDN);
! 177: if (k==5) mpfr_random (op3);
! 178:
! 179: /* reference call: foo(s, a, b, c) */
! 180: testfunc (ref, op1, op2, op3, rnd);
! 181:
! 182: /* foo(a, a, b, c) */
! 183: mpfr_set (res, op1, rnd); /* exact operation */
! 184: testfunc (res, res, op2, op3, rnd);
! 185:
! 186: if (mpfr_compare (res, ref))
! 187: {
! 188: fprintf (stderr,
! 189: "Error for %s(a, a, b, c) for a=%e, b=%e, c=%e\n",
! 190: foo,
! 191: mpfr_get_d1 (op1), mpfr_get_d1 (op2), mpfr_get_d1 (op3));
! 192: fprintf (stderr, "expected %e, got %e\n", mpfr_get_d1 (ref),
! 193: mpfr_get_d1 (res));
! 194: exit (1);
! 195: }
! 196:
! 197: /* foo(b, a, b, c) */
! 198: mpfr_set (res, op2, rnd);
! 199: testfunc (res, op1, res, op3, rnd);
! 200:
! 201: if (mpfr_compare (res, ref))
! 202: {
! 203: fprintf (stderr,
! 204: "Error for %s(b, a, b, c) for a=%e, b=%e, c=%e\n",
! 205: foo,
! 206: mpfr_get_d1 (op1), mpfr_get_d1 (op2), mpfr_get_d1 (op3));
! 207: fprintf (stderr, "expected %e, got %e\n", mpfr_get_d1 (ref),
! 208: mpfr_get_d1 (res));
! 209: exit (1);
! 210: }
! 211:
! 212: /* foo(c, a, b, c) */
! 213: mpfr_set (res, op3, rnd);
! 214: testfunc (res, op1, op2, res, rnd);
! 215:
! 216: if (mpfr_compare (res, ref))
! 217: {
! 218: fprintf (stderr,
! 219: "Error for %s(c, a, b, c) for a=%e, b=%e, c=%e\n",
! 220: foo,
! 221: mpfr_get_d1 (op1), mpfr_get_d1 (op2), mpfr_get_d1 (op3));
! 222: fprintf (stderr, "expected %e, got %e\n", mpfr_get_d1 (ref),
! 223: mpfr_get_d1 (res));
! 224: exit (1);
! 225: }
! 226:
! 227: /* foo(a, a, a,c) */
! 228: testfunc (ref, op1, op1, op3, rnd);
! 229: mpfr_set (res, op1, rnd);
! 230: testfunc (res, res, res, op3, rnd);
! 231: if (mpfr_compare (res, ref))
! 232: {
! 233: fprintf (stderr,
! 234: "Error for %s(a, a, a, c) for a=%e, a=%e, c=%e\n",
! 235: foo,
! 236: mpfr_get_d1 (op1), mpfr_get_d1 (op2), mpfr_get_d1 (op3));
! 237: fprintf (stderr, "expected %e, got %e\n", mpfr_get_d1 (ref),
! 238: mpfr_get_d1 (res));
! 239: exit (1);
! 240: }
! 241:
! 242: /* foo(a, a, b,a) */
! 243: testfunc (ref, op1, op2, op1, rnd);
! 244: mpfr_set (res, op1, rnd);
! 245: testfunc (res, res, op2, res, rnd);
! 246: if (mpfr_compare (res, ref))
! 247: {
! 248: fprintf (stderr,
! 249: "Error for %s(a, a, b, a) for a=%e, a=%e, c=%e\n",
! 250: foo,
! 251: mpfr_get_d1 (op1), mpfr_get_d1 (op2), mpfr_get_d1 (op3));
! 252: fprintf (stderr, "expected %e, got %e\n", mpfr_get_d1 (ref),
! 253: mpfr_get_d1 (res));
! 254: exit (1);
! 255: }
! 256:
! 257: /* foo(b, a, b, b) */
! 258: testfunc (ref, op1, op2, op2, rnd);
! 259: mpfr_set (res, op2, rnd);
! 260: testfunc (res, op1, res, res, rnd);
! 261: if (mpfr_compare (res, ref))
! 262: {
! 263: fprintf (stderr,
! 264: "Error for %s(b, a, b, b) for a=%e, a=%e, c=%e\n",
! 265: foo,
! 266: mpfr_get_d1 (op1), mpfr_get_d1 (op2), mpfr_get_d1 (op3));
! 267: fprintf (stderr, "expected %e, got %e\n", mpfr_get_d1 (ref),
! 268: mpfr_get_d1 (res));
! 269: exit (1);
! 270: }
! 271:
! 272: /* foo (a, a, a, a) */
! 273: testfunc (ref, op1, op1, op1 ,rnd);
! 274: mpfr_set (res, op1, rnd);
! 275: testfunc (res, res, res, res, rnd);
! 276: if (mpfr_compare (res, ref))
! 277: {
! 278: fprintf (stderr,
! 279: "Error for %s(a, a, a, a) for a=%e\n", foo,
! 280: mpfr_get_d1 (op1));
! 281: fprintf (stderr, "expected %e, got %e\n", mpfr_get_d1 (ref),
! 282: mpfr_get_d1 (res));
! 283: exit (1);
! 284: }
! 285: }
! 286: }
! 287: }
! 288:
! 289: mpfr_clear (ref);
! 290: mpfr_clear (op1);
! 291: mpfr_clear (op2);
! 292: mpfr_clear (op3);
! 293: mpfr_clear (res);
! 294:
! 295: }
! 296:
! 297: void
! 298: test2ui (char *foo, mp_prec_t prec, mp_rnd_t rnd)
! 299: {
! 300: mpfr_t ref1, ref2;
! 301: unsigned int ref3;
! 302: mp_limb_t c[1];
! 303: mpfr_t res1;
! 304: int i;
! 305:
! 306: #ifdef DEBUG
! 307: printf("checking %s\n", foo);
! 308: #endif
! 309: mpfr_init2 (ref1, prec);
! 310: mpfr_init2 (ref2, prec);
! 311: mpfr_init2 (res1, prec);
! 312:
! 313:
! 314:
! 315: /* ref2 can be NaN, +Inf, -Inf, +0, -0 or any number
! 316: ref3 can be 0 or any number */
! 317: for (i=0; i<12; i++)
! 318: {
! 319: if (i%6==0) mpfr_set_nan (ref2);
! 320: if (i%6==1) mpfr_set_inf (ref2, 1);
! 321: if (i%6==2) mpfr_set_inf (ref2, -1);
! 322: if (i%6==3) mpfr_set_d (ref2, 0.0, GMP_RNDN);
! 323: if (i%6==4) mpfr_set_d (ref2, -0.0, GMP_RNDN);
! 324: if (i%6==5) mpfr_random (ref2);
! 325:
! 326: if (i/6==0)
! 327: ref3=0;
! 328: else
! 329: {
! 330: mpn_random (c, 1);
! 331: ref3 = (unsigned int) c[0];
! 332: }
! 333:
! 334: /* reference call: foo(a, b, c) */
! 335: testfunc (ref1, ref2, ref3, rnd);
! 336:
! 337: /* foo(a, a, c) */
! 338: mpfr_set (res1, ref2, rnd); /* exact operation */
! 339: testfunc (res1, res1, ref3, rnd);
! 340:
! 341: if (mpfr_compare (res1, ref1))
! 342: {
! 343: fprintf (stderr, "Error for %s(a, a, c) for a=%e c=%u\n", foo,
! 344: mpfr_get_d1 (ref2), ref3);
! 345: fprintf (stderr, "expected %e, got %e\n", mpfr_get_d1 (ref1),
! 346: mpfr_get_d1 (res1));
! 347: exit (1);
! 348: }
! 349: }
! 350:
! 351: mpfr_clear (ref1);
! 352: mpfr_clear (ref2);
! 353: mpfr_clear (res1);
! 354: }
! 355:
! 356: void
! 357: testui2 (char *foo, mp_prec_t prec, mp_rnd_t rnd)
! 358: {
! 359: mpfr_t ref1, ref3;
! 360: unsigned int ref2;
! 361: mp_limb_t c[1];
! 362: mpfr_t res1;
! 363: int i;
! 364:
! 365: #ifdef DEBUG
! 366: printf("checking %s\n", foo);
! 367: #endif
! 368: mpfr_init2 (ref1, prec);
! 369: mpfr_init2 (ref3, prec);
! 370: mpfr_init2 (res1, prec);
! 371: mpfr_random (ref3);
! 372: mpn_random (c, 1);
! 373: ref2 = (unsigned int) c[0];
! 374:
! 375: for (i=0; i<12; i++) {
! 376: if (i%6==0) mpfr_set_nan (ref3);
! 377: if (i%6==1) mpfr_set_inf (ref3, 1);
! 378: if (i%6==2) mpfr_set_inf (ref3, -1);
! 379: if (i%6==3) mpfr_set_d (ref3, 0.0, GMP_RNDN);
! 380: if (i%6==4) mpfr_set_d (ref3, -0.0, GMP_RNDN);
! 381: if (i%6==5) mpfr_random (ref3);
! 382:
! 383: if (i/6==0) ref2=0;
! 384: else {
! 385: mpn_random (c, 1);
! 386: ref2 = (unsigned int) c[0];
! 387: }
! 388:
! 389: /* reference call: foo(a, b, c) */
! 390: testfunc (ref1, ref2, ref3, rnd);
! 391:
! 392: /* foo(a, b, a) */
! 393: mpfr_set (res1, ref3, rnd); /* exact operation */
! 394: testfunc (res1, ref2, res1, rnd);
! 395: if (mpfr_compare (res1, ref1)) {
! 396: fprintf (stderr, "Error for %s(a, b, a) for b=%u a=%e\n", foo,
! 397: ref2, mpfr_get_d1 (ref3));
! 398: fprintf (stderr, "expected %e, got %e\n", mpfr_get_d1 (ref1),
! 399: mpfr_get_d1 (res1));
! 400: exit (1);
! 401: }
! 402: }
! 403:
! 404: mpfr_clear (ref1);
! 405: mpfr_clear (ref3);
! 406: mpfr_clear (res1);
! 407: }
! 408:
! 409: /* foo(mpfr_ptr, mpfr_srcptr, mp_rndt) */
! 410: void
! 411: test2 (char *foo, mp_prec_t prec, mp_rnd_t rnd)
! 412: {
! 413: mpfr_t ref1, ref2;
! 414: mpfr_t res1;
! 415: int i;
! 416:
! 417: #ifdef DEBUG
! 418: printf("checking %s\n", foo);
! 419: #endif
! 420: mpfr_init2 (ref1, prec);
! 421: mpfr_init2 (ref2, prec);
! 422: mpfr_init2 (res1, prec);
! 423: mpfr_random (ref2);
! 424:
! 425: for (i=0; i<6; i++) {
! 426: if (i==0) mpfr_set_nan (ref2);
! 427: if (i==1) mpfr_set_inf (ref2, 1);
! 428: if (i==2) mpfr_set_inf (ref2, -1);
! 429: if (i==3) mpfr_set_d (ref2, 0.0, GMP_RNDN);
! 430: if (i==4) mpfr_set_d (ref2, -0.0, GMP_RNDN);
! 431: if (i==5) mpfr_random (ref2);
! 432:
! 433: /* reference call: foo(a, b) */
! 434: testfunc (ref1, ref2, rnd);
! 435:
! 436: /* foo(a, a) */
! 437: mpfr_set (res1, ref2, rnd); /* exact operation */
! 438: testfunc (res1, res1, rnd);
! 439: if (mpfr_compare (res1, ref1)) {
! 440: fprintf (stderr, "Error for %s(a, a) for a=%e\n", foo, mpfr_get_d1 (ref2));
! 441: fprintf (stderr, "expected %e, got %e\n", mpfr_get_d1 (ref1),
! 442: mpfr_get_d1 (res1));
! 443: exit (1);
! 444: }
! 445: }
! 446:
! 447: mpfr_clear (ref1);
! 448: mpfr_clear (ref2);
! 449: mpfr_clear (res1);
! 450: }
! 451:
! 452: /* foo(mpfr_ptr, mpfr_srcptr) */
! 453: void
! 454: test2a (char *foo, mp_prec_t prec)
! 455: {
! 456: mpfr_t ref1, ref2;
! 457: mpfr_t res1;
! 458: int i;
! 459:
! 460: #ifdef DEBUG
! 461: printf("checking %s\n", foo);
! 462: #endif
! 463: mpfr_init2 (ref1, prec);
! 464: mpfr_init2 (ref2, prec);
! 465: mpfr_init2 (res1, prec);
! 466: mpfr_random (ref2);
! 467:
! 468: for (i=0; i<6; i++) {
! 469: if (i==0) mpfr_set_nan (ref2);
! 470: if (i==1) mpfr_set_inf (ref2, 1);
! 471: if (i==2) mpfr_set_inf (ref2, -1);
! 472: if (i==3) mpfr_set_d (ref2, 0.0, GMP_RNDN);
! 473: if (i==4) mpfr_set_d (ref2, -0.0, GMP_RNDN);
! 474: if (i==5) mpfr_random (ref2);
! 475:
! 476: /* reference call: foo(a, b) */
! 477: testfunc (ref1, ref2);
! 478:
! 479: /* foo(a, a) */
! 480: mpfr_set (res1, ref2, GMP_RNDN); /* exact operation */
! 481: testfunc (res1, res1);
! 482: if (mpfr_compare (res1, ref1)) {
! 483: fprintf (stderr, "Error for %s(a, a) for a=%e\n", foo, mpfr_get_d1 (ref2));
! 484: fprintf (stderr, "expected %e, got %e\n", mpfr_get_d1 (ref1),
! 485: mpfr_get_d1 (res1));
! 486: exit (1);
! 487: }
! 488: }
! 489:
! 490: mpfr_clear (ref1);
! 491: mpfr_clear (ref2);
! 492: mpfr_clear (res1);
! 493: }
! 494:
! 495: /* one operand, two results */
! 496: void
! 497: test3a (char *foo, mp_prec_t prec, mp_rnd_t rnd)
! 498: {
! 499: mpfr_t ref1, ref2, ref3;
! 500: mpfr_t res1, res2;
! 501: int i;
! 502:
! 503: #ifdef DEBUG
! 504: printf("checking %s\n", foo);
! 505: #endif
! 506: mpfr_init2 (ref1, prec);
! 507: mpfr_init2 (ref2, prec);
! 508: mpfr_init2 (ref3, prec);
! 509: mpfr_init2 (res1, prec);
! 510: mpfr_init2 (res2, prec);
! 511: mpfr_random (ref3);
! 512:
! 513: for (i=0; i<6; i++) {
! 514: if (i==0) mpfr_set_nan (ref3);
! 515: if (i==1) mpfr_set_inf (ref3, 1);
! 516: if (i==2) mpfr_set_inf (ref3, -1);
! 517: if (i==3) mpfr_set_d (ref3, 0.0, GMP_RNDN);
! 518: if (i==4) mpfr_set_d (ref3, -0.0, GMP_RNDN);
! 519: if (i==5) mpfr_random (ref3);
! 520:
! 521: /* reference call: foo(a, b, c) */
! 522: testfunc (ref1, ref2, ref3, rnd);
! 523:
! 524: /* foo(a, b, a) */
! 525: mpfr_set (res1, ref3, rnd); /* exact operation */
! 526: testfunc (res1, res2, res1, rnd);
! 527: if (mpfr_compare (res1, ref1) || mpfr_compare (res2, ref2)) {
! 528: fprintf (stderr, "Error for %s(a, b, a) for a=%e\n", foo, mpfr_get_d1 (ref3));
! 529: fprintf (stderr, "expected (%e,%e), got (%e,%e)\n", mpfr_get_d1 (ref1),
! 530: mpfr_get_d1 (ref2), mpfr_get_d1 (res1), mpfr_get_d1 (res2));
! 531: exit (1);
! 532: }
! 533:
! 534: /* foo(a, b, b) */
! 535: mpfr_set (res2, ref3, rnd); /* exact operation */
! 536: testfunc (res1, res2, res2, rnd);
! 537: if (mpfr_compare (res1, ref1) || mpfr_compare (res2, ref2)) {
! 538: fprintf (stderr, "Error for %s(a, b, b) for b=%e\n", foo, mpfr_get_d1 (ref3));
! 539: fprintf (stderr, "expected (%e,%e), got (%e,%e)\n", mpfr_get_d1 (ref1),
! 540: mpfr_get_d1 (ref2), mpfr_get_d1 (res1), mpfr_get_d1 (res2));
! 541: exit (1);
! 542: }
! 543: }
! 544:
! 545: mpfr_clear (ref1);
! 546: mpfr_clear (ref2);
! 547: mpfr_clear (ref3);
! 548: mpfr_clear (res1);
! 549: mpfr_clear (res2);
! 550: }
! 551:
! 552: int
! 553: main (void)
! 554: {
! 555: testfunc = (fct_t) mpfr_add; test3 ("mpfr_add", 53, GMP_RNDN);
! 556: testfunc = (fct_t) mpfr_add_ui; test2ui ("mpfr_add_ui", 53, GMP_RNDN);
! 557: testfunc = (fct_t) mpfr_agm; test3 ("mpfr_agm", 53, GMP_RNDN);
! 558: testfunc = (fct_t) mpfr_ceil; test2 ("mpfr_ceil", 53, GMP_RNDN);
! 559: testfunc = (fct_t) mpfr_div; test3 ("mpfr_div", 53, GMP_RNDN);
! 560: testfunc = (fct_t) mpfr_div_2exp; test2ui ("mpfr_div_2exp", 53, GMP_RNDN);
! 561: testfunc = (fct_t) mpfr_div_ui; test2ui ("mpfr_div_ui", 53, GMP_RNDN);
! 562: testfunc = (fct_t) mpfr_exp; test2 ("mpfr_exp", 53, GMP_RNDN);
! 563: testfunc = (fct_t) mpfr_floor; test2 ("mpfr_floor", 53, GMP_RNDN);
! 564: testfunc = (fct_t) mpfr_log; test2 ("mpfr_log", 53, GMP_RNDN);
! 565: testfunc = (fct_t) mpfr_mul; test3 ("mpfr_mul", 53, GMP_RNDN);
! 566: testfunc = (fct_t) mpfr_mul_2exp; test2ui ("mpfr_mul_2exp", 53, GMP_RNDN);
! 567: testfunc = (fct_t) mpfr_mul_ui; test2ui ("mpfr_mul_ui", 53, GMP_RNDN);
! 568: testfunc = (fct_t) mpfr_neg; test2 ("mpfr_neg", 53, GMP_RNDN);
! 569: testfunc = (fct_t) mpfr_pow_ui; test2ui ("mpfr_pow_ui", 53, GMP_RNDN);
! 570: testfunc = (fct_t) mpfr_reldiff; test3 ("mpfr_reldiff", 53, GMP_RNDN);
! 571: testfunc = (fct_t) mpfr_sub; test3 ("mpfr_sub", 53, GMP_RNDN);
! 572: testfunc = (fct_t) mpfr_sub_ui; test2ui ("mpfr_sub_ui", 53, GMP_RNDN);
! 573: testfunc = (fct_t) mpfr_sqrt; test2 ("mpfr_sqrt", 53, GMP_RNDN);
! 574: testfunc = (fct_t) mpfr_ui_div; testui2 ("mpfr_ui_div", 53, GMP_RNDN);
! 575: testfunc = (fct_t) mpfr_ui_sub; testui2 ("mpfr_ui_sub", 53, GMP_RNDN);
! 576: testfunc = (fct_t) mpfr_trunc; test2 ("mpfr_trunc", 53, GMP_RNDN);
! 577: testfunc = (fct_t) mpfr_asin; test2 ("mpfr_asin", 53, GMP_RNDN);
! 578: testfunc = (fct_t) mpfr_acos; test2 ("mpfr_acos", 53, GMP_RNDN);
! 579: testfunc = (fct_t) mpfr_atan; test2 ("mpfr_atan", 53, GMP_RNDN);
! 580: testfunc = (fct_t) mpfr_sinh; test2 ("mpfr_sinh", 53, GMP_RNDN);
! 581: testfunc = (fct_t) mpfr_cosh; test2 ("mpfr_cosh", 53, GMP_RNDN);
! 582: testfunc = (fct_t) mpfr_tanh; test2 ("mpfr_tanh", 53, GMP_RNDN);
! 583: testfunc = (fct_t) mpfr_asinh; test2 ("mpfr_asinh", 53, GMP_RNDN);
! 584: testfunc = (fct_t) mpfr_acosh; test2 ("mpfr_acosh", 53, GMP_RNDN);
! 585: testfunc = (fct_t) mpfr_atanh; test2 ("mpfr_atanh", 53, GMP_RNDN);
! 586: testfunc = (fct_t) mpfr_exp2; test2 ("mpfr_exp2", 53, GMP_RNDN);
! 587: testfunc = (fct_t) mpfr_cos; test2 ("mpfr_cos", 53, GMP_RNDN);
! 588: testfunc = (fct_t) mpfr_sin; test2 ("mpfr_sin", 53, GMP_RNDN);
! 589: testfunc = (fct_t) mpfr_tan; test2 ("mpfr_tan", 53, GMP_RNDN);
! 590: testfunc = (fct_t) mpfr_log10; test2 ("mpfr_log10", 53, GMP_RNDN);
! 591: testfunc = (fct_t) mpfr_log2; test2 ("mpfr_log2", 53, GMP_RNDN);
! 592: testfunc = (fct_t) mpfr_pow; test3 ("mpfr_pow", 53, GMP_RNDN);
! 593: testfunc = (fct_t) mpfr_fma; test4 ("mpfr_fma", 53, GMP_RNDN);
! 594: return 0;
! 595: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>