Hex Artifact Content
Not logged in

Artifact 0880f18b4191e131f596d413c304531b5f154c95:


0000: 2f 2a 20 54 65 73 74 20 66 69 6c 65 20 66 6f 72  /* Test file for
0010: 20 6d 70 66 72 5f 63 6d 70 2e 0a 0a 43 6f 70 79   mpfr_cmp...Copy
0020: 72 69 67 68 74 20 31 39 39 39 2c 20 32 30 30 31  right 1999, 2001
0030: 2c 20 32 30 30 32 20 46 72 65 65 20 53 6f 66 74  , 2002 Free Soft
0040: 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c  ware Foundation,
0050: 20 49 6e 63 2e 0a 0a 54 68 69 73 20 66 69 6c 65   Inc...This file
0060: 20 69 73 20 70 61 72 74 20 6f 66 20 74 68 65 20   is part of the 
0070: 4d 50 46 52 20 4c 69 62 72 61 72 79 2e 0a 0a 54  MPFR Library...T
0080: 68 65 20 4d 50 46 52 20 4c 69 62 72 61 72 79 20  he MPFR Library 
0090: 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65  is free software
00a0: 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74  ; you can redist
00b0: 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72  ribute it and/or
00c0: 20 6d 6f 64 69 66 79 0a 69 74 20 75 6e 64 65 72   modify.it under
00d0: 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68   the terms of th
00e0: 65 20 47 4e 55 20 4c 65 73 73 65 72 20 47 65 6e  e GNU Lesser Gen
00f0: 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65  eral Public Lice
0100: 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 64  nse as published
0110: 20 62 79 0a 74 68 65 20 46 72 65 65 20 53 6f 66   by.the Free Sof
0120: 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e  tware Foundation
0130: 3b 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e  ; either version
0140: 20 32 2e 31 20 6f 66 20 74 68 65 20 4c 69 63 65   2.1 of the Lice
0150: 6e 73 65 2c 20 6f 72 20 28 61 74 20 79 6f 75 72  nse, or (at your
0160: 0a 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74  .option) any lat
0170: 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 54 68 65  er version...The
0180: 20 4d 50 46 52 20 4c 69 62 72 61 72 79 20 69 73   MPFR Library is
0190: 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20   distributed in 
01a0: 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74  the hope that it
01b0: 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c   will be useful,
01c0: 20 62 75 74 0a 57 49 54 48 4f 55 54 20 41 4e 59   but.WITHOUT ANY
01d0: 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f   WARRANTY; witho
01e0: 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c  ut even the impl
01f0: 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 20  ied warranty of 
0200: 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 0a  MERCHANTABILITY.
0210: 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41  or FITNESS FOR A
0220: 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50   PARTICULAR PURP
0230: 4f 53 45 2e 20 20 53 65 65 20 74 68 65 20 47 4e  OSE.  See the GN
0240: 55 20 4c 65 73 73 65 72 20 47 65 6e 65 72 61 6c  U Lesser General
0250: 20 50 75 62 6c 69 63 0a 4c 69 63 65 6e 73 65 20   Public.License 
0260: 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73  for more details
0270: 2e 0a 0a 59 6f 75 20 73 68 6f 75 6c 64 20 68 61  ...You should ha
0280: 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f  ve received a co
0290: 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 4c 65  py of the GNU Le
02a0: 73 73 65 72 20 47 65 6e 65 72 61 6c 20 50 75 62  sser General Pub
02b0: 6c 69 63 20 4c 69 63 65 6e 73 65 0a 61 6c 6f 6e  lic License.alon
02c0: 67 20 77 69 74 68 20 74 68 65 20 4d 50 46 52 20  g with the MPFR 
02d0: 4c 69 62 72 61 72 79 3b 20 73 65 65 20 74 68 65  Library; see the
02e0: 20 66 69 6c 65 20 43 4f 50 59 49 4e 47 2e 4c 49   file COPYING.LI
02f0: 42 2e 20 20 49 66 20 6e 6f 74 2c 20 77 72 69 74  B.  If not, writ
0300: 65 20 74 6f 0a 74 68 65 20 46 72 65 65 20 53 6f  e to.the Free So
0310: 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f  ftware Foundatio
0320: 6e 2c 20 49 6e 63 2e 2c 20 35 39 20 54 65 6d 70  n, Inc., 59 Temp
0330: 6c 65 20 50 6c 61 63 65 20 2d 20 53 75 69 74 65  le Place - Suite
0340: 20 33 33 30 2c 20 42 6f 73 74 6f 6e 2c 0a 4d 41   330, Boston,.MA
0350: 20 30 32 31 31 31 2d 31 33 30 37 2c 20 55 53 41   02111-1307, USA
0360: 2e 20 2a 2f 0a 0a 23 69 6e 63 6c 75 64 65 20 3c  . */..#include <
0370: 73 74 64 69 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64  stdio.h>.#includ
0380: 65 20 3c 73 74 64 6c 69 62 2e 68 3e 0a 23 69 6e  e <stdlib.h>.#in
0390: 63 6c 75 64 65 20 3c 6d 61 74 68 2e 68 3e 0a 23  clude <math.h>.#
03a0: 69 6e 63 6c 75 64 65 20 22 67 6d 70 2e 68 22 0a  include "gmp.h".
03b0: 23 69 6e 63 6c 75 64 65 20 22 6d 70 66 72 2e 68  #include "mpfr.h
03c0: 22 0a 23 69 6e 63 6c 75 64 65 20 22 6d 70 66 72  ".#include "mpfr
03d0: 2d 69 6d 70 6c 2e 68 22 0a 23 69 6e 63 6c 75 64  -impl.h".#includ
03e0: 65 20 22 6d 70 66 72 2d 74 65 73 74 2e 68 22 0a  e "mpfr-test.h".
03f0: 0a 69 6e 74 0a 6d 61 69 6e 20 28 76 6f 69 64 29  .int.main (void)
0400: 0a 7b 0a 20 20 64 6f 75 62 6c 65 20 78 2c 20 79  .{.  double x, y
0410: 3b 0a 20 20 6d 70 66 72 5f 74 20 78 78 2c 20 79  ;.  mpfr_t xx, y
0420: 79 3b 0a 20 20 69 6e 74 20 69 2c 20 63 3b 0a 20  y;.  int i, c;. 
0430: 20 6d 70 5f 70 72 65 63 5f 74 20 70 3b 0a 0a 20   mp_prec_t p;.. 
0440: 20 6d 70 66 72 5f 69 6e 69 74 20 28 78 78 29 3b   mpfr_init (xx);
0450: 0a 20 20 6d 70 66 72 5f 69 6e 69 74 20 28 79 79  .  mpfr_init (yy
0460: 29 3b 0a 0a 20 20 6d 70 66 72 5f 73 65 74 5f 70  );..  mpfr_set_p
0470: 72 65 63 20 28 78 78 2c 20 32 29 3b 0a 20 20 6d  rec (xx, 2);.  m
0480: 70 66 72 5f 73 65 74 5f 70 72 65 63 20 28 79 79  pfr_set_prec (yy
0490: 2c 20 32 29 3b 0a 20 20 6d 70 66 72 5f 73 65 74  , 2);.  mpfr_set
04a0: 5f 73 74 72 5f 72 61 77 28 78 78 2c 20 22 2d 30  _str_raw(xx, "-0
04b0: 2e 31 30 45 30 22 29 3b 0a 20 20 6d 70 66 72 5f  .10E0");.  mpfr_
04c0: 73 65 74 5f 73 74 72 5f 72 61 77 28 79 79 2c 20  set_str_raw(yy, 
04d0: 22 2d 30 2e 31 30 45 30 22 29 3b 0a 20 20 69 66  "-0.10E0");.  if
04e0: 20 28 6d 70 66 72 5f 63 6d 70 20 28 78 78 2c 20   (mpfr_cmp (xx, 
04f0: 79 79 29 29 0a 20 20 20 20 7b 0a 20 20 20 20 20  yy)).    {.     
0500: 20 66 70 72 69 6e 74 66 20 28 73 74 64 65 72 72   fprintf (stderr
0510: 2c 20 22 6d 70 66 72 5f 63 6d 70 20 28 78 78 2c  , "mpfr_cmp (xx,
0520: 20 79 79 29 20 72 65 74 75 72 6e 73 20 6e 6f 6e   yy) returns non
0530: 2d 7a 65 72 6f 20 66 6f 72 20 70 72 65 63 3d 32  -zero for prec=2
0540: 5c 6e 22 29 3b 0a 20 20 20 20 20 20 65 78 69 74  \n");.      exit
0550: 20 28 31 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 6d   (1);.    }..  m
0560: 70 66 72 5f 73 65 74 5f 70 72 65 63 20 28 78 78  pfr_set_prec (xx
0570: 2c 20 36 35 29 3b 0a 20 20 6d 70 66 72 5f 73 65  , 65);.  mpfr_se
0580: 74 5f 70 72 65 63 20 28 79 79 2c 20 36 35 29 3b  t_prec (yy, 65);
0590: 0a 20 20 6d 70 66 72 5f 73 65 74 5f 73 74 72 5f  .  mpfr_set_str_
05a0: 72 61 77 28 78 78 2c 20 22 30 2e 31 30 30 31 31  raw(xx, "0.10011
05b0: 30 31 30 31 30 31 30 30 30 31 31 30 31 30 31 30  0101010001101010
05c0: 31 30 30 30 30 30 30 30 30 31 31 30 30 31 30 30  1000000001100100
05d0: 31 30 30 31 31 31 30 30 30 31 30 31 31 31 30 31  1001110001011101
05e0: 30 31 31 31 31 31 30 31 31 31 30 31 45 36 32 33  011111011101E623
05f0: 22 29 3b 0a 20 20 6d 70 66 72 5f 73 65 74 5f 73  ");.  mpfr_set_s
0600: 74 72 5f 72 61 77 28 79 79 2c 20 22 30 2e 31 30  tr_raw(yy, "0.10
0610: 30 31 31 30 31 30 31 30 31 30 30 30 31 31 30 31  0110101010001101
0620: 30 31 30 31 30 30 30 30 30 30 30 30 31 31 30 30  0101000000001100
0630: 31 30 30 31 30 30 31 31 31 30 30 30 31 30 31 31  1001001110001011
0640: 31 30 31 30 31 31 31 31 31 30 31 31 31 30 30 45  101011111011100E
0650: 36 32 33 22 29 3b 0a 20 20 70 20 3d 20 30 3b 0a  623");.  p = 0;.
0660: 20 20 69 66 20 28 6d 70 66 72 5f 63 6d 70 32 28    if (mpfr_cmp2(
0670: 78 78 2c 20 79 79 2c 20 26 70 29 20 3c 3d 20 30  xx, yy, &p) <= 0
0680: 20 7c 7c 20 70 20 21 3d 20 36 34 29 0a 20 20 20   || p != 64).   
0690: 20 7b 0a 20 20 20 20 20 20 70 72 69 6e 74 66 28   {.      printf(
06a0: 22 45 72 72 6f 72 20 28 31 29 20 69 6e 20 6d 70  "Error (1) in mp
06b0: 66 72 5f 63 6d 70 32 5c 6e 22 29 3b 0a 20 20 20  fr_cmp2\n");.   
06c0: 20 20 20 65 78 69 74 28 31 29 3b 0a 20 20 20 20     exit(1);.    
06d0: 7d 0a 20 20 6d 70 66 72 5f 73 65 74 5f 73 74 72  }.  mpfr_set_str
06e0: 5f 72 61 77 28 78 78 2c 20 22 30 2e 31 30 31 30  _raw(xx, "0.1010
06f0: 30 30 31 30 30 30 31 31 31 30 31 31 30 31 31 31  0010001110110111
0700: 30 30 30 30 31 30 30 30 31 30 30 30 30 31 30 30  0000100010000100
0710: 31 31 31 31 31 31 30 31 30 30 30 31 30 30 30 31  1111110100010001
0720: 31 31 30 31 30 30 30 30 31 31 31 30 30 22 29 3b  1101000011100");
0730: 0a 20 20 6d 70 66 72 5f 73 65 74 5f 73 74 72 5f  .  mpfr_set_str_
0740: 72 61 77 28 79 79 2c 20 22 30 2e 31 30 31 30 30  raw(yy, "0.10100
0750: 30 31 30 30 30 31 31 31 30 31 31 30 31 31 31 30  0100011101101110
0760: 30 30 30 31 30 30 30 31 30 30 30 30 31 30 30 31  0001000100001001
0770: 31 31 31 31 31 30 31 30 30 30 31 30 30 30 31 31  1111101000100011
0780: 31 30 31 30 30 30 30 31 31 30 31 31 22 29 3b 0a  101000011011");.
0790: 20 20 70 20 3d 20 30 3b 0a 20 20 69 66 20 28 6d    p = 0;.  if (m
07a0: 70 66 72 5f 63 6d 70 32 28 78 78 2c 20 79 79 2c  pfr_cmp2(xx, yy,
07b0: 20 26 70 29 20 3c 3d 20 30 20 7c 7c 20 70 20 21   &p) <= 0 || p !
07c0: 3d 20 36 34 29 0a 20 20 20 20 7b 0a 20 20 20 20  = 64).    {.    
07d0: 20 20 70 72 69 6e 74 66 28 22 45 72 72 6f 72 20    printf("Error 
07e0: 28 32 29 20 69 6e 20 6d 70 66 72 5f 63 6d 70 32  (2) in mpfr_cmp2
07f0: 5c 6e 22 29 3b 0a 20 20 20 20 20 20 65 78 69 74  \n");.      exit
0800: 28 31 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 6d 70  (1);.    }..  mp
0810: 66 72 5f 73 65 74 5f 70 72 65 63 20 28 78 78 2c  fr_set_prec (xx,
0820: 20 31 36 30 29 3b 20 6d 70 66 72 5f 73 65 74 5f   160); mpfr_set_
0830: 70 72 65 63 20 28 79 79 2c 20 31 36 30 29 3b 0a  prec (yy, 160);.
0840: 20 20 6d 70 66 72 5f 73 65 74 5f 73 74 72 5f 72    mpfr_set_str_r
0850: 61 77 20 28 78 78 2c 20 22 30 2e 31 45 31 22 29  aw (xx, "0.1E1")
0860: 3b 0a 20 20 6d 70 66 72 5f 73 65 74 5f 73 74 72  ;.  mpfr_set_str
0870: 5f 72 61 77 20 28 79 79 2c 20 22 30 2e 31 31 31  _raw (yy, "0.111
0880: 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31  1111111111111111
0890: 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31  1111111111111111
08a0: 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31  1111111111111111
08b0: 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31  1111111111111111
08c0: 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31  1111111111111111
08d0: 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31  1111111111111111
08e0: 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31  1111111111111111
08f0: 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31  1111111111111111
0900: 31 31 31 31 31 31 31 31 31 31 31 31 30 30 30 30  1111111111110000
0910: 30 31 31 30 30 30 31 31 31 30 31 30 30 22 29 3b  0110001110100");
0920: 0a 20 20 70 20 3d 20 30 3b 0a 20 20 69 66 20 28  .  p = 0;.  if (
0930: 6d 70 66 72 5f 63 6d 70 32 20 28 78 78 2c 20 79  mpfr_cmp2 (xx, y
0940: 79 2c 20 26 70 29 20 3c 3d 20 30 20 7c 7c 20 70  y, &p) <= 0 || p
0950: 20 21 3d 20 31 34 34 29 0a 20 20 20 20 7b 0a 20   != 144).    {. 
0960: 20 20 20 20 20 70 72 69 6e 74 66 28 22 45 72 72       printf("Err
0970: 6f 72 20 28 33 29 20 69 6e 20 6d 70 66 72 5f 63  or (3) in mpfr_c
0980: 6d 70 32 5c 6e 22 29 3b 0a 20 20 20 20 20 20 65  mp2\n");.      e
0990: 78 69 74 28 31 29 3b 0a 20 20 20 20 7d 0a 0a 20  xit(1);.    }.. 
09a0: 20 6d 70 66 72 5f 73 65 74 5f 70 72 65 63 28 78   mpfr_set_prec(x
09b0: 78 2c 20 35 33 29 3b 20 6d 70 66 72 5f 73 65 74  x, 53); mpfr_set
09c0: 5f 70 72 65 63 28 79 79 2c 20 32 30 30 29 3b 0a  _prec(yy, 200);.
09d0: 20 20 6d 70 66 72 5f 73 65 74 5f 64 28 78 78 2c    mpfr_set_d(xx,
09e0: 20 31 2e 30 2c 20 30 29 3b 0a 20 20 6d 70 66 72   1.0, 0);.  mpfr
09f0: 5f 73 65 74 5f 64 28 79 79 2c 20 31 2e 30 2c 20  _set_d(yy, 1.0, 
0a00: 30 29 3b 0a 20 20 69 66 20 28 6d 70 66 72 5f 63  0);.  if (mpfr_c
0a10: 6d 70 28 78 78 2c 79 79 29 21 3d 30 29 20 7b 0a  mp(xx,yy)!=0) {.
0a20: 20 20 20 20 70 72 69 6e 74 66 28 22 45 72 72 6f      printf("Erro
0a30: 72 20 69 6e 20 6d 70 66 72 5f 63 6d 70 3a 20 31  r in mpfr_cmp: 1
0a40: 2e 30 20 21 3d 20 31 2e 30 5c 6e 22 29 3b 20 65  .0 != 1.0\n"); e
0a50: 78 69 74 28 31 29 3b 0a 20 20 7d 0a 20 20 6d 70  xit(1);.  }.  mp
0a60: 66 72 5f 73 65 74 5f 70 72 65 63 28 79 79 2c 20  fr_set_prec(yy, 
0a70: 33 31 29 3b 0a 20 20 6d 70 66 72 5f 73 65 74 5f  31);.  mpfr_set_
0a80: 64 28 78 78 2c 20 31 2e 30 30 30 30 30 30 30 30  d(xx, 1.00000000
0a90: 30 32 2c 20 30 29 3b 0a 20 20 6d 70 66 72 5f 73  02, 0);.  mpfr_s
0aa0: 65 74 5f 64 28 79 79 2c 20 31 2e 30 2c 20 30 29  et_d(yy, 1.0, 0)
0ab0: 3b 0a 20 20 69 66 20 28 21 28 6d 70 66 72 5f 63  ;.  if (!(mpfr_c
0ac0: 6d 70 28 78 78 2c 79 79 29 3e 30 29 29 20 7b 0a  mp(xx,yy)>0)) {.
0ad0: 20 20 20 20 70 72 69 6e 74 66 28 22 45 72 72 6f      printf("Erro
0ae0: 72 20 69 6e 20 6d 70 66 72 5f 63 6d 70 3a 20 6e  r in mpfr_cmp: n
0af0: 6f 74 20 31 2e 30 30 30 30 30 30 30 30 30 32 20  ot 1.0000000002 
0b00: 3e 20 31 2e 30 5c 6e 22 29 3b 20 65 78 69 74 28  > 1.0\n"); exit(
0b10: 31 29 3b 0a 20 20 7d 0a 20 20 6d 70 66 72 5f 73  1);.  }.  mpfr_s
0b20: 65 74 5f 70 72 65 63 28 79 79 2c 20 35 33 29 3b  et_prec(yy, 53);
0b30: 0a 0a 20 20 2f 2a 20 62 75 67 20 66 6f 75 6e 64  ..  /* bug found
0b40: 20 62 79 20 47 65 72 61 72 64 6f 20 42 61 6c 6c   by Gerardo Ball
0b50: 61 62 69 6f 20 2a 2f 0a 20 20 6d 70 66 72 5f 73  abio */.  mpfr_s
0b60: 65 74 5f 64 28 78 78 2c 20 30 2e 30 2c 20 47 4d  et_d(xx, 0.0, GM
0b70: 50 5f 52 4e 44 4e 29 3b 0a 20 20 6d 70 66 72 5f  P_RNDN);.  mpfr_
0b80: 73 65 74 5f 64 28 79 79 2c 20 30 2e 31 2c 20 47  set_d(yy, 0.1, G
0b90: 4d 50 5f 52 4e 44 4e 29 3b 0a 20 20 69 66 20 28  MP_RNDN);.  if (
0ba0: 6d 70 66 72 5f 63 6d 70 28 78 78 2c 20 79 79 29  mpfr_cmp(xx, yy)
0bb0: 20 3e 3d 20 30 29 20 7b 0a 20 20 20 20 66 70 72   >= 0) {.    fpr
0bc0: 69 6e 74 66 28 73 74 64 65 72 72 2c 0a 09 20 20  intf(stderr,..  
0bd0: 20 20 22 45 72 72 6f 72 20 69 6e 20 6d 70 66 72    "Error in mpfr
0be0: 5f 63 6d 70 28 30 2e 30 2c 20 30 2e 31 29 2c 20  _cmp(0.0, 0.1), 
0bf0: 67 69 76 65 73 20 25 64 5c 6e 22 2c 20 6d 70 66  gives %d\n", mpf
0c00: 72 5f 63 6d 70 28 78 78 2c 20 79 79 29 29 3b 0a  r_cmp(xx, yy));.
0c10: 20 20 20 20 65 78 69 74 28 31 29 3b 0a 20 20 7d      exit(1);.  }
0c20: 0a 0a 20 20 6d 70 66 72 5f 73 65 74 5f 69 6e 66  ..  mpfr_set_inf
0c30: 20 28 78 78 2c 20 31 29 3b 0a 20 20 6d 70 66 72   (xx, 1);.  mpfr
0c40: 5f 73 65 74 5f 64 28 79 79 2c 20 2d 32 33 34 38  _set_d(yy, -2348
0c50: 39 37 34 35 2e 30 33 32 39 2c 20 47 4d 50 5f 52  9745.0329, GMP_R
0c60: 4e 44 4e 29 3b 20 0a 20 20 69 66 20 28 6d 70 66  NDN); .  if (mpf
0c70: 72 5f 63 6d 70 28 78 78 2c 20 79 79 29 20 3c 3d  r_cmp(xx, yy) <=
0c80: 20 30 29 20 7b 20 0a 20 20 20 20 66 70 72 69 6e   0) { .    fprin
0c90: 74 66 28 73 74 64 65 72 72 2c 0a 09 20 20 20 20  tf(stderr,..    
0ca0: 22 45 72 72 6f 72 20 69 6e 20 6d 70 66 72 5f 63  "Error in mpfr_c
0cb0: 6d 70 28 49 6e 66 70 2c 20 32 33 34 38 39 37 34  mp(Infp, 2348974
0cc0: 35 2e 30 33 32 39 29 2c 20 67 69 76 65 73 20 25  5.0329), gives %
0cd0: 64 5c 6e 22 2c 20 6d 70 66 72 5f 63 6d 70 28 78  d\n", mpfr_cmp(x
0ce0: 78 2c 20 79 79 29 29 3b 0a 20 20 20 20 65 78 69  x, yy));.    exi
0cf0: 74 28 31 29 3b 0a 20 20 7d 0a 0a 20 20 6d 70 66  t(1);.  }..  mpf
0d00: 72 5f 73 65 74 5f 69 6e 66 20 28 78 78 2c 20 31  r_set_inf (xx, 1
0d10: 29 3b 0a 20 20 6d 70 66 72 5f 73 65 74 5f 69 6e  );.  mpfr_set_in
0d20: 66 20 28 79 79 2c 20 2d 31 29 3b 0a 20 20 69 66  f (yy, -1);.  if
0d30: 20 28 6d 70 66 72 5f 63 6d 70 28 78 78 2c 20 79   (mpfr_cmp(xx, y
0d40: 79 29 20 3c 3d 20 30 29 20 7b 20 0a 20 20 20 20  y) <= 0) { .    
0d50: 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 0a  fprintf(stderr,.
0d60: 09 20 20 20 20 22 45 72 72 6f 72 20 69 6e 20 6d  .    "Error in m
0d70: 70 66 72 5f 63 6d 70 28 49 6e 66 70 2c 20 49 6e  pfr_cmp(Infp, In
0d80: 66 6d 29 2c 20 67 69 76 65 73 20 25 64 5c 6e 22  fm), gives %d\n"
0d90: 2c 20 6d 70 66 72 5f 63 6d 70 28 78 78 2c 20 79  , mpfr_cmp(xx, y
0da0: 79 29 29 3b 0a 20 20 20 20 65 78 69 74 28 31 29  y));.    exit(1)
0db0: 3b 0a 20 20 7d 0a 0a 20 20 6d 70 66 72 5f 73 65  ;.  }..  mpfr_se
0dc0: 74 5f 69 6e 66 20 28 78 78 2c 20 2d 31 29 3b 0a  t_inf (xx, -1);.
0dd0: 20 20 6d 70 66 72 5f 73 65 74 5f 69 6e 66 20 28    mpfr_set_inf (
0de0: 79 79 2c 20 31 29 3b 0a 20 20 69 66 20 28 6d 70  yy, 1);.  if (mp
0df0: 66 72 5f 63 6d 70 28 78 78 2c 20 79 79 29 20 3e  fr_cmp(xx, yy) >
0e00: 3d 20 30 29 20 7b 20 0a 20 20 20 20 66 70 72 69  = 0) { .    fpri
0e10: 6e 74 66 28 73 74 64 65 72 72 2c 0a 09 20 20 20  ntf(stderr,..   
0e20: 20 22 45 72 72 6f 72 20 69 6e 20 6d 70 66 72 5f   "Error in mpfr_
0e30: 63 6d 70 28 49 6e 66 6d 2c 20 49 6e 66 70 29 2c  cmp(Infm, Infp),
0e40: 20 67 69 76 65 73 20 25 64 5c 6e 22 2c 20 6d 70   gives %d\n", mp
0e50: 66 72 5f 63 6d 70 28 78 78 2c 20 79 79 29 29 3b  fr_cmp(xx, yy));
0e60: 0a 20 20 20 20 65 78 69 74 28 31 29 3b 0a 20 20  .    exit(1);.  
0e70: 7d 0a 0a 20 20 6d 70 66 72 5f 73 65 74 5f 69 6e  }..  mpfr_set_in
0e80: 66 20 28 78 78 2c 20 31 29 3b 0a 20 20 6d 70 66  f (xx, 1);.  mpf
0e90: 72 5f 73 65 74 5f 69 6e 66 20 28 79 79 2c 20 31  r_set_inf (yy, 1
0ea0: 29 3b 0a 20 20 69 66 20 28 6d 70 66 72 5f 63 6d  );.  if (mpfr_cm
0eb0: 70 28 78 78 2c 20 79 79 29 20 21 3d 20 30 29 20  p(xx, yy) != 0) 
0ec0: 7b 20 0a 20 20 20 20 66 70 72 69 6e 74 66 28 73  { .    fprintf(s
0ed0: 74 64 65 72 72 2c 0a 09 20 20 20 20 22 45 72 72  tderr,..    "Err
0ee0: 6f 72 20 69 6e 20 6d 70 66 72 5f 63 6d 70 28 49  or in mpfr_cmp(I
0ef0: 6e 66 70 2c 20 49 6e 66 70 29 2c 20 67 69 76 65  nfp, Infp), give
0f00: 73 20 25 64 5c 6e 22 2c 20 6d 70 66 72 5f 63 6d  s %d\n", mpfr_cm
0f10: 70 28 78 78 2c 20 79 79 29 29 3b 0a 20 20 20 20  p(xx, yy));.    
0f20: 65 78 69 74 28 31 29 3b 0a 20 20 7d 0a 0a 20 20  exit(1);.  }..  
0f30: 6d 70 66 72 5f 73 65 74 5f 69 6e 66 20 28 78 78  mpfr_set_inf (xx
0f40: 2c 20 2d 31 29 3b 0a 20 20 6d 70 66 72 5f 73 65  , -1);.  mpfr_se
0f50: 74 5f 69 6e 66 20 28 79 79 2c 20 2d 31 29 3b 0a  t_inf (yy, -1);.
0f60: 20 20 69 66 20 28 6d 70 66 72 5f 63 6d 70 28 78    if (mpfr_cmp(x
0f70: 78 2c 20 79 79 29 20 21 3d 20 30 29 20 7b 20 0a  x, yy) != 0) { .
0f80: 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65      fprintf(stde
0f90: 72 72 2c 0a 09 20 20 20 20 22 45 72 72 6f 72 20  rr,..    "Error 
0fa0: 69 6e 20 6d 70 66 72 5f 63 6d 70 28 49 6e 66 6d  in mpfr_cmp(Infm
0fb0: 2c 20 49 6e 66 6d 29 2c 20 67 69 76 65 73 20 25  , Infm), gives %
0fc0: 64 5c 6e 22 2c 20 6d 70 66 72 5f 63 6d 70 28 78  d\n", mpfr_cmp(x
0fd0: 78 2c 20 79 79 29 29 3b 0a 20 20 20 20 65 78 69  x, yy));.    exi
0fe0: 74 28 31 29 3b 0a 20 20 7d 0a 0a 20 20 6d 70 66  t(1);.  }..  mpf
0ff0: 72 5f 73 65 74 5f 69 6e 66 20 28 78 78 2c 20 2d  r_set_inf (xx, -
1000: 31 29 3b 0a 20 20 6d 70 66 72 5f 73 65 74 5f 64  1);.  mpfr_set_d
1010: 28 79 79 2c 20 32 33 34 36 2e 30 39 32 33 34 2c  (yy, 2346.09234,
1020: 20 47 4d 50 5f 52 4e 44 4e 29 3b 20 0a 20 20 69   GMP_RNDN); .  i
1030: 66 20 28 6d 70 66 72 5f 63 6d 70 28 78 78 2c 20  f (mpfr_cmp(xx, 
1040: 79 79 29 20 3e 3d 20 30 29 20 7b 20 0a 20 20 20  yy) >= 0) { .   
1050: 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c   fprintf(stderr,
1060: 0a 09 20 20 20 20 22 45 72 72 6f 72 20 69 6e 20  ..    "Error in 
1070: 6d 70 66 72 5f 63 6d 70 28 49 6e 66 6d 2c 20 32  mpfr_cmp(Infm, 2
1080: 33 34 36 2e 30 39 32 33 34 29 2c 20 67 69 76 65  346.09234), give
1090: 73 20 25 64 5c 6e 22 2c 20 6d 70 66 72 5f 63 6d  s %d\n", mpfr_cm
10a0: 70 28 78 78 2c 20 79 79 29 29 3b 0a 20 20 20 20  p(xx, yy));.    
10b0: 65 78 69 74 28 31 29 3b 0a 20 20 7d 0a 0a 20 20  exit(1);.  }..  
10c0: 6d 70 66 72 5f 73 65 74 5f 64 20 28 78 78 2c 20  mpfr_set_d (xx, 
10d0: 30 2e 30 2c 20 47 4d 50 5f 52 4e 44 4e 29 3b 0a  0.0, GMP_RNDN);.
10e0: 20 20 6d 70 66 72 5f 73 65 74 5f 64 20 28 79 79    mpfr_set_d (yy
10f0: 2c 20 31 2e 30 2c 20 47 4d 50 5f 52 4e 44 4e 29  , 1.0, GMP_RNDN)
1100: 3b 0a 20 20 69 66 20 28 28 69 20 3d 20 6d 70 66  ;.  if ((i = mpf
1110: 72 5f 63 6d 70 33 20 28 78 78 2c 20 79 79 2c 20  r_cmp3 (xx, yy, 
1120: 31 29 29 20 3e 3d 20 30 29 20 7b 0a 20 20 20 20  1)) >= 0) {.    
1130: 66 70 72 69 6e 74 66 20 28 73 74 64 65 72 72 2c  fprintf (stderr,
1140: 20 22 45 72 72 6f 72 3a 20 6d 70 66 72 5f 63 6d   "Error: mpfr_cm
1150: 70 33 20 28 30 2c 20 31 2c 20 31 29 20 67 69 76  p3 (0, 1, 1) giv
1160: 65 73 20 25 64 20 69 6e 73 74 65 61 64 20 6f 66  es %d instead of
1170: 20 61 20 6e 65 67 61 74 69 76 65 20 76 61 6c 75   a negative valu
1180: 65 5c 6e 22 2c 20 69 29 3b 0a 20 20 20 20 65 78  e\n", i);.    ex
1190: 69 74 20 28 31 29 3b 0a 20 20 7d 0a 20 20 69 66  it (1);.  }.  if
11a0: 20 28 28 69 20 3d 20 6d 70 66 72 5f 63 6d 70 33   ((i = mpfr_cmp3
11b0: 20 28 78 78 2c 20 79 79 2c 20 2d 31 29 29 20 3c   (xx, yy, -1)) <
11c0: 3d 20 30 29 20 7b 0a 20 20 20 20 66 70 72 69 6e  = 0) {.    fprin
11d0: 74 66 20 28 73 74 64 65 72 72 2c 20 22 45 72 72  tf (stderr, "Err
11e0: 6f 72 3a 20 6d 70 66 72 5f 63 6d 70 33 20 28 30  or: mpfr_cmp3 (0
11f0: 2c 20 31 2c 20 2d 31 29 20 67 69 76 65 73 20 25  , 1, -1) gives %
1200: 64 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20 70  d instead of a p
1210: 6f 73 69 74 69 76 65 20 76 61 6c 75 65 5c 6e 22  ositive value\n"
1220: 2c 20 69 29 3b 0a 20 20 20 20 65 78 69 74 20 28  , i);.    exit (
1230: 31 29 3b 0a 20 20 7d 0a 0a 20 20 66 6f 72 20 28  1);.  }..  for (
1240: 69 3d 30 3b 69 3c 31 30 30 30 30 30 30 3b 29 20  i=0;i<1000000;) 
1250: 7b 20 20 20 20 78 3d 64 72 61 6e 64 28 29 3b 20  {    x=drand(); 
1260: 79 3d 64 72 61 6e 64 28 29 3b 0a 20 20 20 20 69  y=drand();.    i
1270: 66 20 28 21 69 73 6e 61 6e 28 78 29 20 26 26 20  f (!isnan(x) && 
1280: 21 69 73 6e 61 6e 28 79 29 29 20 7b 0a 20 20 20  !isnan(y)) {.   
1290: 20 20 20 69 2b 2b 3b 0a 20 20 20 20 20 20 6d 70     i++;.      mp
12a0: 66 72 5f 73 65 74 5f 64 28 78 78 2c 20 78 2c 20  fr_set_d(xx, x, 
12b0: 30 29 3b 0a 20 20 20 20 20 20 6d 70 66 72 5f 73  0);.      mpfr_s
12c0: 65 74 5f 64 28 79 79 2c 20 79 2c 20 30 29 3b 0a  et_d(yy, y, 0);.
12d0: 20 20 20 20 20 20 63 20 3d 20 6d 70 66 72 5f 63        c = mpfr_c
12e0: 6d 70 28 78 78 2c 79 79 29 3b 0a 20 20 20 20 20  mp(xx,yy);.     
12f0: 20 69 66 20 28 28 63 3e 30 20 26 26 20 78 3c 3d   if ((c>0 && x<=
1300: 79 29 20 7c 7c 20 28 63 3d 3d 30 20 26 26 20 78  y) || (c==0 && x
1310: 21 3d 79 29 20 7c 7c 20 28 63 3c 30 20 26 26 20  !=y) || (c<0 && 
1320: 78 3e 3d 79 29 29 20 7b 0a 09 70 72 69 6e 74 66  x>=y)) {..printf
1330: 28 22 45 72 72 6f 72 20 69 6e 20 6d 70 66 72 5f  ("Error in mpfr_
1340: 63 6d 70 20 77 69 74 68 20 78 3d 25 31 2e 32 30  cmp with x=%1.20
1350: 65 2c 20 79 3d 25 31 2e 32 30 65 20 6d 70 66 72  e, y=%1.20e mpfr
1360: 5f 63 6d 70 28 78 2c 79 29 3d 25 64 5c 6e 22 2c  _cmp(x,y)=%d\n",
1370: 0a 09 20 20 20 20 20 20 20 78 2c 79 2c 63 29 3b  ..       x,y,c);
1380: 20 65 78 69 74 28 31 29 3b 0a 20 20 20 20 20 20   exit(1);.      
1390: 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 6d  }.    }.  }..  m
13a0: 70 66 72 5f 63 6c 65 61 72 28 78 78 29 3b 20 6d  pfr_clear(xx); m
13b0: 70 66 72 5f 63 6c 65 61 72 28 79 79 29 3b 0a 0a  pfr_clear(yy);..
13c0: 20 20 72 65 74 75 72 6e 20 30 3b 0a 7d 0a          return 0;.}.