Hex Artifact Content
Not logged in

Artifact ed407929f3aaed93fa2ae8412144857b6240fb34:


0000: 2f 2a 20 54 65 73 74 20 66 69 6c 65 20 66 6f 72  /* Test file for
0010: 20 65 78 63 65 70 74 69 6f 6e 73 2e 0a 0a 43 6f   exceptions...Co
0020: 70 79 72 69 67 68 74 20 32 30 30 31 20 46 72 65  pyright 2001 Fre
0030: 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64  e Software Found
0040: 61 74 69 6f 6e 2e 0a 0a 54 68 69 73 20 66 69 6c  ation...This fil
0050: 65 20 69 73 20 70 61 72 74 20 6f 66 20 74 68 65  e is part of the
0060: 20 4d 50 46 52 20 4c 69 62 72 61 72 79 2e 0a 0a   MPFR Library...
0070: 54 68 65 20 4d 50 46 52 20 4c 69 62 72 61 72 79  The MPFR Library
0080: 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72   is free softwar
0090: 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73  e; you can redis
00a0: 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f  tribute it and/o
00b0: 72 20 6d 6f 64 69 66 79 0a 69 74 20 75 6e 64 65  r modify.it unde
00c0: 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74  r the terms of t
00d0: 68 65 20 47 4e 55 20 4c 65 73 73 65 72 20 47 65  he GNU Lesser Ge
00e0: 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63  neral Public Lic
00f0: 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65  ense as publishe
0100: 64 20 62 79 0a 74 68 65 20 46 72 65 65 20 53 6f  d by.the Free So
0110: 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f  ftware Foundatio
0120: 6e 3b 20 65 69 74 68 65 72 20 76 65 72 73 69 6f  n; either versio
0130: 6e 20 32 2e 31 20 6f 66 20 74 68 65 20 4c 69 63  n 2.1 of the Lic
0140: 65 6e 73 65 2c 20 6f 72 20 28 61 74 20 79 6f 75  ense, or (at you
0150: 72 0a 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61  r.option) any la
0160: 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 54 68  ter version...Th
0170: 65 20 4d 50 46 52 20 4c 69 62 72 61 72 79 20 69  e MPFR Library i
0180: 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e  s distributed in
0190: 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69   the hope that i
01a0: 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c  t will be useful
01b0: 2c 20 62 75 74 0a 57 49 54 48 4f 55 54 20 41 4e  , but.WITHOUT AN
01c0: 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68  Y WARRANTY; with
01d0: 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70  out even the imp
01e0: 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66  lied warranty of
01f0: 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59   MERCHANTABILITY
0200: 0a 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20  .or FITNESS FOR 
0210: 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52  A PARTICULAR PUR
0220: 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 20 47  POSE.  See the G
0230: 4e 55 20 4c 65 73 73 65 72 20 47 65 6e 65 72 61  NU Lesser Genera
0240: 6c 20 50 75 62 6c 69 63 0a 4c 69 63 65 6e 73 65  l Public.License
0250: 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c   for more detail
0260: 73 2e 0a 0a 59 6f 75 20 73 68 6f 75 6c 64 20 68  s...You should h
0270: 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63  ave received a c
0280: 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 4c  opy of the GNU L
0290: 65 73 73 65 72 20 47 65 6e 65 72 61 6c 20 50 75  esser General Pu
02a0: 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 61 6c 6f  blic License.alo
02b0: 6e 67 20 77 69 74 68 20 74 68 65 20 4d 50 46 52  ng with the MPFR
02c0: 20 4c 69 62 72 61 72 79 3b 20 73 65 65 20 74 68   Library; see th
02d0: 65 20 66 69 6c 65 20 43 4f 50 59 49 4e 47 2e 4c  e file COPYING.L
02e0: 49 42 2e 20 20 49 66 20 6e 6f 74 2c 20 77 72 69  IB.  If not, wri
02f0: 74 65 20 74 6f 0a 74 68 65 20 46 72 65 65 20 53  te to.the Free S
0300: 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69  oftware Foundati
0310: 6f 6e 2c 20 49 6e 63 2e 2c 20 35 39 20 54 65 6d  on, Inc., 59 Tem
0320: 70 6c 65 20 50 6c 61 63 65 20 2d 20 53 75 69 74  ple Place - Suit
0330: 65 20 33 33 30 2c 20 42 6f 73 74 6f 6e 2c 0a 4d  e 330, Boston,.M
0340: 41 20 30 32 31 31 31 2d 31 33 30 37 2c 20 55 53  A 02111-1307, US
0350: 41 2e 20 2a 2f 0a 0a 23 69 6e 63 6c 75 64 65 20  A. */..#include 
0360: 3c 73 74 64 69 6f 2e 68 3e 0a 23 69 6e 63 6c 75  <stdio.h>.#inclu
0370: 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 0a 23 69  de <stdlib.h>.#i
0380: 6e 63 6c 75 64 65 20 22 67 6d 70 2e 68 22 0a 23  nclude "gmp.h".#
0390: 69 6e 63 6c 75 64 65 20 22 6d 70 66 72 2e 68 22  include "mpfr.h"
03a0: 0a 0a 76 6f 69 64 20 6d 70 66 72 5f 73 65 74 5f  ..void mpfr_set_
03b0: 64 6f 75 62 6c 65 5f 72 61 6e 67 65 20 5f 50 52  double_range _PR
03c0: 4f 54 4f 28 28 76 6f 69 64 29 29 3b 0a 0a 76 6f  OTO((void));..vo
03d0: 69 64 0a 6d 70 66 72 5f 73 65 74 5f 64 6f 75 62  id.mpfr_set_doub
03e0: 6c 65 5f 72 61 6e 67 65 20 28 76 6f 69 64 29 0a  le_range (void).
03f0: 7b 0a 20 20 6d 70 66 72 5f 73 65 74 5f 64 65 66  {.  mpfr_set_def
0400: 61 75 6c 74 5f 70 72 65 63 20 28 35 33 29 3b 0a  ault_prec (53);.
0410: 20 20 0a 20 20 2f 2a 20 69 6e 20 64 6f 75 62 6c    .  /* in doubl
0420: 65 20 70 72 65 63 69 73 69 6f 6e 20 66 6f 72 6d  e precision form
0430: 61 74 2c 20 74 68 65 20 75 6e 62 69 61 73 65 64  at, the unbiased
0440: 20 65 78 70 6f 6e 65 6e 74 20 69 73 20 62 65 74   exponent is bet
0450: 77 65 65 6e 20 30 20 61 6e 64 0a 20 20 20 20 20  ween 0 and.     
0460: 32 30 34 37 2c 20 77 68 65 72 65 20 30 20 69 73  2047, where 0 is
0470: 20 75 73 65 64 20 66 6f 72 20 73 75 62 6e 6f 72   used for subnor
0480: 6d 61 6c 20 6e 75 6d 62 65 72 73 2c 20 61 6e 64  mal numbers, and
0490: 20 32 30 34 37 20 66 6f 72 20 73 70 65 63 69 61   2047 for specia
04a0: 6c 0a 20 20 20 20 20 6e 75 6d 62 65 72 73 20 28  l.     numbers (
04b0: 69 6e 66 69 6e 69 74 69 65 73 2c 20 4e 61 4e 29  infinities, NaN)
04c0: 2c 20 61 6e 64 20 74 68 65 20 62 69 61 73 20 69  , and the bias i
04d0: 73 20 31 30 32 33 2c 20 74 68 75 73 20 22 6e 6f  s 1023, thus "no
04e0: 72 6d 61 6c 22 20 6e 75 6d 62 65 72 73 0a 20 20  rmal" numbers.  
04f0: 20 20 20 68 61 76 65 20 61 6e 20 65 78 70 6f 6e     have an expon
0500: 65 6e 74 20 62 65 74 77 65 65 6e 20 2d 31 30 32  ent between -102
0510: 32 20 61 6e 64 20 31 30 32 33 2c 20 63 6f 72 72  2 and 1023, corr
0520: 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 6e 75 6d  esponding to num
0530: 62 65 72 73 0a 20 20 20 20 20 62 65 74 77 65 65  bers.     betwee
0540: 6e 20 32 5e 28 2d 31 30 32 32 29 20 61 6e 64 20  n 2^(-1022) and 
0550: 70 72 65 76 69 6f 75 73 28 32 5e 28 31 30 32 34  previous(2^(1024
0560: 29 29 2e 0a 20 20 20 20 20 28 54 68 65 20 73 6d  ))..     (The sm
0570: 61 6c 6c 65 73 74 20 73 75 62 6e 6f 72 6d 61 6c  allest subnormal
0580: 20 6e 75 6d 62 65 72 20 69 73 20 30 2e 28 30 5e   number is 0.(0^
0590: 35 31 29 31 2a 32 5e 28 2d 31 30 32 32 29 3d 20  51)1*2^(-1022)= 
05a0: 32 5e 28 2d 31 30 37 34 29 2e 29 0a 0a 20 20 20  2^(-1074).)..   
05b0: 20 20 54 68 65 20 73 6d 61 6c 6c 65 73 74 20 6e    The smallest n
05c0: 6f 72 6d 61 6c 20 70 6f 77 65 72 20 6f 66 20 74  ormal power of t
05d0: 77 6f 20 69 73 20 31 2e 30 2a 32 5e 28 2d 31 30  wo is 1.0*2^(-10
05e0: 32 32 29 2e 0a 20 20 20 20 20 54 68 65 20 6c 61  22)..     The la
05f0: 72 67 65 73 74 20 6e 6f 72 6d 61 6c 20 70 6f 77  rgest normal pow
0600: 65 72 20 6f 66 20 74 77 6f 20 69 73 20 32 5e 31  er of two is 2^1
0610: 30 32 33 2e 0a 20 20 20 20 20 28 57 65 20 68 61  023..     (We ha
0620: 76 65 20 74 6f 20 61 64 64 20 6f 6e 65 20 66 6f  ve to add one fo
0630: 72 20 6d 70 66 72 20 73 69 6e 63 65 20 6d 61 6e  r mpfr since man
0640: 74 69 73 73 61 20 61 72 65 20 62 65 74 77 65 65  tissa are betwee
0650: 6e 20 31 2f 32 20 61 6e 64 20 31 2e 29 0a 20 20  n 1/2 and 1.).  
0660: 2a 2f 0a 0a 20 20 6d 70 66 72 5f 73 65 74 5f 65  */..  mpfr_set_e
0670: 6d 69 6e 20 28 2d 31 30 32 31 29 3b 0a 20 20 6d  min (-1021);.  m
0680: 70 66 72 5f 73 65 74 5f 65 6d 61 78 20 28 31 30  pfr_set_emax (10
0690: 32 34 29 3b 0a 7d 0a 0a 69 6e 74 0a 6d 61 69 6e  24);.}..int.main
06a0: 20 28 69 6e 74 20 61 72 67 63 2c 20 63 68 61 72   (int argc, char
06b0: 20 2a 61 72 67 76 5b 5d 29 0a 7b 0a 20 20 6d 70   *argv[]).{.  mp
06c0: 66 72 5f 74 20 78 2c 20 79 3b 0a 20 20 6d 70 5f  fr_t x, y;.  mp_
06d0: 65 78 70 5f 74 20 65 6d 69 6e 2c 20 65 6d 61 78  exp_t emin, emax
06e0: 3b 0a 0a 20 20 6d 70 66 72 5f 69 6e 69 74 20 28  ;..  mpfr_init (
06f0: 78 29 3b 0a 20 20 6d 70 66 72 5f 69 6e 69 74 20  x);.  mpfr_init 
0700: 28 79 29 3b 0a 0a 20 20 65 6d 69 6e 20 3d 20 6d  (y);..  emin = m
0710: 70 66 72 5f 67 65 74 5f 65 6d 69 6e 20 28 29 3b  pfr_get_emin ();
0720: 0a 20 20 65 6d 61 78 20 3d 20 6d 70 66 72 5f 67  .  emax = mpfr_g
0730: 65 74 5f 65 6d 61 78 20 28 29 3b 0a 20 20 69 66  et_emax ();.  if
0740: 20 28 65 6d 69 6e 20 3e 3d 20 65 6d 61 78 29 0a   (emin >= emax).
0750: 20 20 20 20 7b 0a 20 20 20 20 20 20 66 70 72 69      {.      fpri
0760: 6e 74 66 20 28 73 74 64 65 72 72 2c 20 22 45 72  ntf (stderr, "Er
0770: 72 6f 72 3a 20 65 6d 69 6e 20 3e 3d 20 65 6d 61  ror: emin >= ema
0780: 78 5c 6e 22 29 3b 0a 20 20 20 20 20 20 65 78 69  x\n");.      exi
0790: 74 20 28 31 29 3b 0a 20 20 20 20 7d 0a 0a 20 20  t (1);.    }..  
07a0: 6d 70 66 72 5f 73 65 74 5f 75 69 20 28 78 2c 20  mpfr_set_ui (x, 
07b0: 31 2c 20 47 4d 50 5f 52 4e 44 4e 29 3b 0a 20 20  1, GMP_RNDN);.  
07c0: 6d 70 66 72 5f 6d 75 6c 5f 32 65 78 70 20 28 78  mpfr_mul_2exp (x
07d0: 2c 20 78 2c 20 31 30 32 34 2c 20 47 4d 50 5f 52  , x, 1024, GMP_R
07e0: 4e 44 4e 29 3b 0a 20 20 6d 70 66 72 5f 73 65 74  NDN);.  mpfr_set
07f0: 5f 64 6f 75 62 6c 65 5f 72 61 6e 67 65 20 28 29  _double_range ()
0800: 3b 0a 20 20 6d 70 66 72 5f 63 68 65 63 6b 5f 72  ;.  mpfr_check_r
0810: 61 6e 67 65 20 28 78 2c 20 47 4d 50 5f 52 4e 44  ange (x, GMP_RND
0820: 4e 29 3b 0a 20 20 69 66 20 28 21 6d 70 66 72 5f  N);.  if (!mpfr_
0830: 69 6e 66 5f 70 20 28 78 29 20 7c 7c 20 28 6d 70  inf_p (x) || (mp
0840: 66 72 5f 73 67 6e 28 78 29 20 3c 3d 20 30 29 29  fr_sgn(x) <= 0))
0850: 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 66 70 72  .    {.      fpr
0860: 69 6e 74 66 20 28 73 74 64 65 72 72 2c 20 22 45  intf (stderr, "E
0870: 72 72 6f 72 3a 20 32 5e 31 30 32 34 20 72 6f 75  rror: 2^1024 rou
0880: 6e 64 65 64 20 74 6f 20 6e 65 61 72 65 73 74 20  nded to nearest 
0890: 73 68 6f 75 6c 64 20 67 69 76 65 20 2b 49 6e 66  should give +Inf
08a0: 5c 6e 22 29 3b 0a 20 20 20 20 20 20 65 78 69 74  \n");.      exit
08b0: 20 28 31 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 6d   (1);.    }..  m
08c0: 70 66 72 5f 73 65 74 5f 65 6d 61 78 20 28 31 30  pfr_set_emax (10
08d0: 32 35 29 3b 0a 20 20 6d 70 66 72 5f 73 65 74 5f  25);.  mpfr_set_
08e0: 75 69 20 28 78 2c 20 31 2c 20 47 4d 50 5f 52 4e  ui (x, 1, GMP_RN
08f0: 44 4e 29 3b 0a 20 20 6d 70 66 72 5f 6d 75 6c 5f  DN);.  mpfr_mul_
0900: 32 65 78 70 20 28 78 2c 20 78 2c 20 31 30 32 34  2exp (x, x, 1024
0910: 2c 20 47 4d 50 5f 52 4e 44 4e 29 3b 0a 20 20 6d  , GMP_RNDN);.  m
0920: 70 66 72 5f 73 65 74 5f 64 6f 75 62 6c 65 5f 72  pfr_set_double_r
0930: 61 6e 67 65 20 28 29 3b 0a 20 20 6d 70 66 72 5f  ange ();.  mpfr_
0940: 63 68 65 63 6b 5f 72 61 6e 67 65 20 28 78 2c 20  check_range (x, 
0950: 47 4d 50 5f 52 4e 44 44 29 3b 0a 20 20 69 66 20  GMP_RNDD);.  if 
0960: 28 21 6d 70 66 72 5f 6e 75 6d 62 65 72 5f 70 20  (!mpfr_number_p 
0970: 28 78 29 29 0a 20 20 20 20 7b 0a 20 20 20 20 20  (x)).    {.     
0980: 20 66 70 72 69 6e 74 66 20 28 73 74 64 65 72 72   fprintf (stderr
0990: 2c 20 22 45 72 72 6f 72 3a 20 32 5e 31 30 32 34  , "Error: 2^1024
09a0: 20 72 6f 75 6e 64 65 64 20 64 6f 77 6e 20 73 68   rounded down sh
09b0: 6f 75 6c 64 20 67 69 76 65 20 61 20 6e 6f 72 6d  ould give a norm
09c0: 61 6c 20 6e 75 6d 62 65 72 5c 6e 22 29 3b 0a 20  al number\n");. 
09d0: 20 20 20 20 20 65 78 69 74 20 28 31 29 3b 0a 20       exit (1);. 
09e0: 20 20 20 7d 0a 0a 20 20 6d 70 66 72 5f 73 65 74     }..  mpfr_set
09f0: 5f 75 69 20 28 78 2c 20 31 2c 20 47 4d 50 5f 52  _ui (x, 1, GMP_R
0a00: 4e 44 4e 29 3b 0a 20 20 6d 70 66 72 5f 6d 75 6c  NDN);.  mpfr_mul
0a10: 5f 32 65 78 70 20 28 78 2c 20 78 2c 20 31 30 32  _2exp (x, x, 102
0a20: 33 2c 20 47 4d 50 5f 52 4e 44 4e 29 3b 0a 20 20  3, GMP_RNDN);.  
0a30: 6d 70 66 72 5f 61 64 64 20 28 78 2c 20 78 2c 20  mpfr_add (x, x, 
0a40: 78 2c 20 47 4d 50 5f 52 4e 44 4e 29 3b 0a 20 20  x, GMP_RNDN);.  
0a50: 69 66 20 28 21 6d 70 66 72 5f 69 6e 66 5f 70 20  if (!mpfr_inf_p 
0a60: 28 78 29 20 7c 7c 20 28 6d 70 66 72 5f 73 67 6e  (x) || (mpfr_sgn
0a70: 28 78 29 20 3c 3d 20 30 29 29 0a 20 20 20 20 7b  (x) <= 0)).    {
0a80: 0a 20 20 20 20 20 20 66 70 72 69 6e 74 66 20 28  .      fprintf (
0a90: 73 74 64 65 72 72 2c 20 22 45 72 72 6f 72 3a 20  stderr, "Error: 
0aa0: 78 2b 78 20 72 6f 75 6e 64 65 64 20 74 6f 20 6e  x+x rounded to n
0ab0: 65 61 72 65 73 74 20 66 6f 72 20 78 3d 32 5e 31  earest for x=2^1
0ac0: 30 32 33 20 73 68 6f 75 6c 64 20 67 69 76 65 20  023 should give 
0ad0: 2b 49 6e 66 5c 6e 22 29 3b 0a 20 20 20 20 20 20  +Inf\n");.      
0ae0: 70 72 69 6e 74 66 20 28 22 65 6d 61 78 20 3d 20  printf ("emax = 
0af0: 25 6c 64 5c 6e 22 2c 20 6d 70 66 72 5f 67 65 74  %ld\n", mpfr_get
0b00: 5f 65 6d 61 78 20 28 29 29 3b 0a 20 20 20 20 20  _emax ());.     
0b10: 20 70 72 69 6e 74 66 20 28 22 67 6f 74 20 22 29   printf ("got ")
0b20: 3b 20 6d 70 66 72 5f 70 72 69 6e 74 5f 62 69 6e  ; mpfr_print_bin
0b30: 61 72 79 20 28 78 29 3b 20 70 75 74 63 68 61 72  ary (x); putchar
0b40: 20 28 27 5c 6e 27 29 3b 0a 20 20 20 20 20 20 65   ('\n');.      e
0b50: 78 69 74 20 28 31 29 3b 0a 20 20 20 20 7d 0a 0a  xit (1);.    }..
0b60: 20 20 6d 70 66 72 5f 73 65 74 5f 75 69 20 28 78    mpfr_set_ui (x
0b70: 2c 20 31 2c 20 47 4d 50 5f 52 4e 44 4e 29 3b 0a  , 1, GMP_RNDN);.
0b80: 20 20 6d 70 66 72 5f 6d 75 6c 5f 32 65 78 70 20    mpfr_mul_2exp 
0b90: 28 78 2c 20 78 2c 20 31 30 32 33 2c 20 47 4d 50  (x, x, 1023, GMP
0ba0: 5f 52 4e 44 4e 29 3b 0a 20 20 6d 70 66 72 5f 61  _RNDN);.  mpfr_a
0bb0: 64 64 20 28 78 2c 20 78 2c 20 78 2c 20 47 4d 50  dd (x, x, x, GMP
0bc0: 5f 52 4e 44 44 29 3b 0a 20 20 69 66 20 28 21 6d  _RNDD);.  if (!m
0bd0: 70 66 72 5f 6e 75 6d 62 65 72 5f 70 20 28 78 29  pfr_number_p (x)
0be0: 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 66 70  ).    {.      fp
0bf0: 72 69 6e 74 66 20 28 73 74 64 65 72 72 2c 20 22  rintf (stderr, "
0c00: 45 72 72 6f 72 3a 20 78 2b 78 20 72 6f 75 6e 64  Error: x+x round
0c10: 65 64 20 64 6f 77 6e 20 66 6f 72 20 78 3d 32 5e  ed down for x=2^
0c20: 31 30 32 33 20 73 68 6f 75 6c 64 20 67 69 76 65  1023 should give
0c30: 20 61 20 6e 6f 72 6d 61 6c 20 6e 75 6d 62 65 72   a normal number
0c40: 5c 6e 22 29 3b 0a 20 20 20 20 20 20 65 78 69 74  \n");.      exit
0c50: 20 28 31 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 6d   (1);.    }..  m
0c60: 70 66 72 5f 73 65 74 5f 75 69 20 28 78 2c 20 31  pfr_set_ui (x, 1
0c70: 2c 20 47 4d 50 5f 52 4e 44 4e 29 3b 0a 20 20 6d  , GMP_RNDN);.  m
0c80: 70 66 72 5f 64 69 76 5f 32 65 78 70 20 28 78 2c  pfr_div_2exp (x,
0c90: 20 78 2c 20 31 30 32 32 2c 20 47 4d 50 5f 52 4e   x, 1022, GMP_RN
0ca0: 44 4e 29 3b 0a 20 20 6d 70 66 72 5f 73 65 74 5f  DN);.  mpfr_set_
0cb0: 73 74 72 5f 72 61 77 20 28 79 2c 20 22 31 2e 31  str_raw (y, "1.1
0cc0: 65 2d 31 30 32 32 22 29 3b 20 2f 2a 20 79 20 3d  e-1022"); /* y =
0cd0: 20 33 2f 32 2a 78 20 2a 2f 0a 20 20 6d 70 66 72   3/2*x */.  mpfr
0ce0: 5f 73 75 62 20 28 79 2c 20 79 2c 20 78 2c 20 47  _sub (y, y, x, G
0cf0: 4d 50 5f 52 4e 44 5a 29 3b 0a 20 20 69 66 20 28  MP_RNDZ);.  if (
0d00: 6d 70 66 72 5f 63 6d 70 5f 75 69 20 28 79 2c 20  mpfr_cmp_ui (y, 
0d10: 30 29 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20  0)).    {.      
0d20: 66 70 72 69 6e 74 66 20 28 73 74 64 65 72 72 2c  fprintf (stderr,
0d30: 20 22 45 72 72 6f 72 3a 20 79 2d 78 20 72 6f 75   "Error: y-x rou
0d40: 6e 64 65 64 20 74 6f 20 7a 65 72 6f 20 73 68 6f  nded to zero sho
0d50: 75 6c 64 20 67 69 76 65 20 30 20 66 6f 72 20 79  uld give 0 for y
0d60: 3d 33 2f 32 2a 32 5e 28 2d 31 30 32 32 29 2c 20  =3/2*2^(-1022), 
0d70: 78 3d 32 5e 28 2d 31 30 32 32 29 5c 6e 22 29 3b  x=2^(-1022)\n");
0d80: 0a 20 20 20 20 20 20 70 72 69 6e 74 66 20 28 22  .      printf ("
0d90: 79 3d 22 29 3b 20 6d 70 66 72 5f 70 72 69 6e 74  y="); mpfr_print
0da0: 5f 62 69 6e 61 72 79 20 28 79 29 3b 20 70 75 74  _binary (y); put
0db0: 63 68 61 72 20 28 27 5c 6e 27 29 3b 0a 20 20 20  char ('\n');.   
0dc0: 20 20 20 65 78 69 74 20 28 31 29 3b 0a 20 20 20     exit (1);.   
0dd0: 20 7d 0a 0a 20 20 6d 70 66 72 5f 63 6c 65 61 72   }..  mpfr_clear
0de0: 20 28 78 29 3b 0a 20 20 6d 70 66 72 5f 63 6c 65   (x);.  mpfr_cle
0df0: 61 72 20 28 79 29 3b 0a 20 20 20 20 0a 20 20 72  ar (y);.    .  r
0e00: 65 74 75 72 6e 20 30 3b 0a 7d 0a                 eturn 0;.}.