Hex Artifact Content
Not logged in

Artifact d34fd65fac43534227700964f9be5fd2de77888c:


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 73 65 74 5f 64 20 61 6e 64 20   mpfr_set_d and 
0020: 6d 70 66 72 5f 67 65 74 5f 64 2e 0a 0a 43 6f 70  mpfr_get_d...Cop
0030: 79 72 69 67 68 74 20 31 39 39 39 2c 20 32 30 30  yright 1999, 200
0040: 30 2c 20 32 30 30 31 2c 20 32 30 30 32 20 46 72  0, 2001, 2002 Fr
0050: 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e  ee Software Foun
0060: 64 61 74 69 6f 6e 2c 20 49 6e 63 2e 0a 0a 54 68  dation, Inc...Th
0070: 69 73 20 66 69 6c 65 20 69 73 20 70 61 72 74 20  is file is part 
0080: 6f 66 20 74 68 65 20 4d 50 46 52 20 4c 69 62 72  of the MPFR Libr
0090: 61 72 79 2e 0a 0a 54 68 65 20 4d 50 46 52 20 4c  ary...The MPFR L
00a0: 69 62 72 61 72 79 20 69 73 20 66 72 65 65 20 73  ibrary is free s
00b0: 6f 66 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e  oftware; you can
00c0: 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74   redistribute it
00d0: 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 69   and/or modify.i
00e0: 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d  t under the term
00f0: 73 20 6f 66 20 74 68 65 20 47 4e 55 20 4c 65 73  s of the GNU Les
0100: 73 65 72 20 47 65 6e 65 72 61 6c 20 50 75 62 6c  ser General Publ
0110: 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75  ic License as pu
0120: 62 6c 69 73 68 65 64 20 62 79 0a 74 68 65 20 46  blished by.the F
0130: 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75  ree Software Fou
0140: 6e 64 61 74 69 6f 6e 3b 20 65 69 74 68 65 72 20  ndation; either 
0150: 76 65 72 73 69 6f 6e 20 32 2e 31 20 6f 66 20 74  version 2.1 of t
0160: 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 20 28  he License, or (
0170: 61 74 20 79 6f 75 72 0a 6f 70 74 69 6f 6e 29 20  at your.option) 
0180: 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f  any later versio
0190: 6e 2e 0a 0a 54 68 65 20 4d 50 46 52 20 4c 69 62  n...The MPFR Lib
01a0: 72 61 72 79 20 69 73 20 64 69 73 74 72 69 62 75  rary is distribu
01b0: 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20  ted in the hope 
01c0: 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20  that it will be 
01d0: 75 73 65 66 75 6c 2c 20 62 75 74 0a 57 49 54 48  useful, but.WITH
01e0: 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59  OUT ANY WARRANTY
01f0: 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74  ; without even t
0200: 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61  he implied warra
0210: 6e 74 79 20 6f 66 20 4d 45 52 43 48 41 4e 54 41  nty of MERCHANTA
0220: 42 49 4c 49 54 59 0a 6f 72 20 46 49 54 4e 45 53  BILITY.or FITNES
0230: 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c  S FOR A PARTICUL
0240: 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65  AR PURPOSE.  See
0250: 20 74 68 65 20 47 4e 55 20 4c 65 73 73 65 72 20   the GNU Lesser 
0260: 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 0a 4c  General Public.L
0270: 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20  icense for more 
0280: 64 65 74 61 69 6c 73 2e 0a 0a 59 6f 75 20 73 68  details...You sh
0290: 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76  ould have receiv
02a0: 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  ed a copy of the
02b0: 20 47 4e 55 20 4c 65 73 73 65 72 20 47 65 6e 65   GNU Lesser Gene
02c0: 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e  ral Public Licen
02d0: 73 65 0a 61 6c 6f 6e 67 20 77 69 74 68 20 74 68  se.along with th
02e0: 65 20 4d 50 46 52 20 4c 69 62 72 61 72 79 3b 20  e MPFR Library; 
02f0: 73 65 65 20 74 68 65 20 66 69 6c 65 20 43 4f 50  see the file COP
0300: 59 49 4e 47 2e 4c 49 42 2e 20 20 49 66 20 6e 6f  YING.LIB.  If no
0310: 74 2c 20 77 72 69 74 65 20 74 6f 0a 74 68 65 20  t, write to.the 
0320: 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f  Free Software Fo
0330: 75 6e 64 61 74 69 6f 6e 2c 20 49 6e 63 2e 2c 20  undation, Inc., 
0340: 35 39 20 54 65 6d 70 6c 65 20 50 6c 61 63 65 20  59 Temple Place 
0350: 2d 20 53 75 69 74 65 20 33 33 30 2c 20 42 6f 73  - Suite 330, Bos
0360: 74 6f 6e 2c 0a 4d 41 20 30 32 31 31 31 2d 31 33  ton,.MA 02111-13
0370: 30 37 2c 20 55 53 41 2e 20 2a 2f 0a 0a 23 69 6e  07, USA. */..#in
0380: 63 6c 75 64 65 20 3c 66 6c 6f 61 74 2e 68 3e 0a  clude <float.h>.
0390: 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e  #include <stdio.
03a0: 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64  h>.#include <std
03b0: 6c 69 62 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20  lib.h>.#include 
03c0: 3c 74 69 6d 65 2e 68 3e 0a 23 69 6e 63 6c 75 64  <time.h>.#includ
03d0: 65 20 22 67 6d 70 2e 68 22 0a 23 69 6e 63 6c 75  e "gmp.h".#inclu
03e0: 64 65 20 22 6d 70 66 72 2e 68 22 0a 23 69 6e 63  de "mpfr.h".#inc
03f0: 6c 75 64 65 20 22 6d 70 66 72 2d 74 65 73 74 2e  lude "mpfr-test.
0400: 68 22 0a 0a 69 6e 74 0a 6d 61 69 6e 20 28 69 6e  h"..int.main (in
0410: 74 20 61 72 67 63 2c 20 63 68 61 72 20 2a 61 72  t argc, char *ar
0420: 67 76 5b 5d 29 0a 7b 0a 20 20 6d 70 66 72 5f 74  gv[]).{.  mpfr_t
0430: 20 78 2c 20 79 2c 20 7a 3b 0a 20 20 75 6e 73 69   x, y, z;.  unsi
0440: 67 6e 65 64 20 6c 6f 6e 67 20 6b 2c 20 6e 3b 0a  gned long k, n;.
0450: 20 20 64 6f 75 62 6c 65 20 64 2c 20 64 64 3b 0a    double d, dd;.
0460: 20 20 0a 20 20 6d 70 66 72 5f 74 65 73 74 5f 69    .  mpfr_test_i
0470: 6e 69 74 20 28 29 3b 0a 0a 20 20 6d 70 66 72 5f  nit ();..  mpfr_
0480: 69 6e 69 74 32 20 28 78 2c 20 32 29 3b 0a 0a 20  init2 (x, 2);.. 
0490: 20 2f 2a 20 63 68 65 63 6b 73 20 74 68 61 74 20   /* checks that 
04a0: 64 65 6e 6f 72 6d 61 6c 69 7a 65 64 20 61 72 65  denormalized are
04b0: 20 6e 6f 74 20 66 6c 75 73 68 65 64 20 74 6f 20   not flushed to 
04c0: 7a 65 72 6f 20 2a 2f 0a 20 20 64 20 3d 20 44 42  zero */.  d = DB
04d0: 4c 5f 4d 49 4e 3b 20 2f 2a 20 32 5e 28 2d 31 30  L_MIN; /* 2^(-10
04e0: 32 32 29 20 2a 2f 0a 20 20 66 6f 72 20 28 6e 3d  22) */.  for (n=
04f0: 30 3b 20 6e 3c 35 32 3b 20 6e 2b 2b 2c 20 64 20  0; n<52; n++, d 
0500: 2f 3d 20 32 2e 30 29 0a 20 20 20 20 69 66 20 28  /= 2.0).    if (
0510: 64 20 21 3d 20 30 2e 30 29 20 2f 2a 20 73 68 6f  d != 0.0) /* sho
0520: 75 6c 64 20 62 65 20 32 5e 28 2d 31 30 32 32 2d  uld be 2^(-1022-
0530: 6e 29 20 2a 2f 0a 20 20 20 20 20 20 7b 0a 20 20  n) */.      {.  
0540: 20 20 20 20 20 20 6d 70 66 72 5f 73 65 74 5f 64        mpfr_set_d
0550: 20 28 78 2c 20 64 2c 20 47 4d 50 5f 52 4e 44 4e   (x, d, GMP_RNDN
0560: 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 6d  );.        if (m
0570: 70 66 72 5f 63 6d 70 5f 75 69 5f 32 65 78 70 20  pfr_cmp_ui_2exp 
0580: 28 78 2c 20 31 2c 20 2d 31 30 32 32 2d 6e 29 29  (x, 1, -1022-n))
0590: 0a 20 20 20 20 20 20 20 20 20 20 7b 0a 20 20 20  .          {.   
05a0: 20 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66           fprintf
05b0: 20 28 73 74 64 65 72 72 2c 20 22 57 72 6f 6e 67   (stderr, "Wrong
05c0: 20 72 65 73 75 6c 74 20 66 6f 72 20 64 3d 32 5e   result for d=2^
05d0: 28 25 6c 64 29 2c 20 22 2c 20 2d 31 30 32 32 2d  (%ld), ", -1022-
05e0: 6e 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  n);.            
05f0: 66 70 72 69 6e 74 66 20 28 73 74 64 65 72 72 2c  fprintf (stderr,
0600: 20 22 67 6f 74 20 22 29 3b 0a 20 20 20 20 20 20   "got ");.      
0610: 20 20 20 20 20 20 6d 70 66 72 5f 6f 75 74 5f 73        mpfr_out_s
0620: 74 72 20 28 73 74 64 65 72 72 2c 20 31 30 2c 20  tr (stderr, 10, 
0630: 31 30 2c 20 78 2c 20 47 4d 50 5f 52 4e 44 4e 29  10, x, GMP_RNDN)
0640: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 70  ;.            fp
0650: 72 69 6e 74 66 20 28 73 74 64 65 72 72 2c 20 22  rintf (stderr, "
0660: 5c 6e 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20  \n");.          
0670: 20 20 6d 70 66 72 5f 70 72 69 6e 74 5f 62 69 6e    mpfr_print_bin
0680: 61 72 79 20 28 78 29 3b 20 70 75 74 63 68 61 72  ary (x); putchar
0690: 20 28 27 5c 6e 27 29 3b 0a 20 20 20 20 20 20 20   ('\n');.       
06a0: 20 20 20 20 20 65 78 69 74 20 28 31 29 3b 0a 20       exit (1);. 
06b0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20           }.     
06c0: 20 7d 0a 0a 20 20 20 2f 2a 20 63 68 65 63 6b 73   }..   /* checks
06d0: 20 74 68 61 74 20 72 6f 75 6e 64 73 20 74 6f 20   that rounds to 
06e0: 6e 65 61 72 65 73 74 20 73 65 74 73 20 74 68 65  nearest sets the
06f0: 20 6c 61 73 74 0a 20 20 20 20 20 62 69 74 20 74   last.     bit t
0700: 6f 20 7a 65 72 6f 20 69 6e 20 63 61 73 65 20 6f  o zero in case o
0710: 66 20 65 71 75 61 6c 20 64 69 73 74 61 6e 63 65  f equal distance
0720: 20 2a 2f 0a 20 20 20 6d 70 66 72 5f 73 65 74 5f   */.   mpfr_set_
0730: 64 20 28 78 2c 20 35 2e 30 2c 20 47 4d 50 5f 52  d (x, 5.0, GMP_R
0740: 4e 44 4e 29 3b 0a 20 20 20 69 66 20 28 6d 70 66  NDN);.   if (mpf
0750: 72 5f 67 65 74 5f 64 31 20 28 78 29 20 21 3d 20  r_get_d1 (x) != 
0760: 34 2e 30 29 0a 20 20 20 20 20 7b 0a 20 20 20 20  4.0).     {.    
0770: 20 20 20 66 70 72 69 6e 74 66 20 28 73 74 64 65     fprintf (stde
0780: 72 72 2c 20 22 45 72 72 6f 72 20 69 6e 20 74 73  rr, "Error in ts
0790: 65 74 5f 64 3a 20 67 6f 74 20 25 67 20 69 6e 73  et_d: got %g ins
07a0: 74 65 61 64 20 6f 66 20 34 2e 30 5c 6e 22 2c 0a  tead of 4.0\n",.
07b0: 09 20 20 20 20 20 20 20 6d 70 66 72 5f 67 65 74  .       mpfr_get
07c0: 5f 64 31 20 28 78 29 29 3b 0a 20 20 20 20 20 20  _d1 (x));.      
07d0: 20 65 78 69 74 20 28 31 29 3b 0a 20 20 20 20 20   exit (1);.     
07e0: 7d 0a 20 20 20 6d 70 66 72 5f 73 65 74 5f 64 20  }.   mpfr_set_d 
07f0: 28 78 2c 20 2d 35 2e 30 2c 20 47 4d 50 5f 52 4e  (x, -5.0, GMP_RN
0800: 44 4e 29 3b 0a 20 20 20 69 66 20 28 6d 70 66 72  DN);.   if (mpfr
0810: 5f 67 65 74 5f 64 31 20 28 78 29 20 21 3d 20 2d  _get_d1 (x) != -
0820: 34 2e 30 29 0a 20 20 20 20 20 7b 0a 20 20 20 20  4.0).     {.    
0830: 20 20 20 66 70 72 69 6e 74 66 20 28 73 74 64 65     fprintf (stde
0840: 72 72 2c 20 22 45 72 72 6f 72 20 69 6e 20 74 73  rr, "Error in ts
0850: 65 74 5f 64 3a 20 67 6f 74 20 25 67 20 69 6e 73  et_d: got %g ins
0860: 74 65 61 64 20 6f 66 20 2d 34 2e 30 5c 6e 22 2c  tead of -4.0\n",
0870: 0a 09 20 20 20 20 20 20 20 6d 70 66 72 5f 67 65  ..       mpfr_ge
0880: 74 5f 64 31 20 28 78 29 29 3b 0a 20 20 20 20 20  t_d1 (x));.     
0890: 20 20 65 78 69 74 20 28 31 29 3b 0a 20 20 20 20    exit (1);.    
08a0: 20 7d 0a 0a 20 20 20 6d 70 66 72 5f 73 65 74 5f   }..   mpfr_set_
08b0: 64 20 28 78 2c 20 39 2e 38 34 38 39 31 30 31 37  d (x, 9.84891017
08c0: 36 32 34 35 30 39 31 34 36 33 34 34 65 2d 30 31  624509146344e-01
08d0: 2c 20 47 4d 50 5f 52 4e 44 55 29 3b 20 0a 20 20  , GMP_RNDU); .  
08e0: 20 69 66 20 28 6d 70 66 72 5f 67 65 74 5f 64 31   if (mpfr_get_d1
08f0: 20 28 78 29 20 21 3d 20 31 2e 30 29 0a 20 20 20   (x) != 1.0).   
0900: 20 20 7b 0a 20 20 20 20 20 20 20 66 70 72 69 6e    {.       fprin
0910: 74 66 20 28 73 74 64 65 72 72 2c 20 22 45 72 72  tf (stderr, "Err
0920: 6f 72 20 69 6e 20 74 73 65 74 5f 64 3a 20 67 6f  or in tset_d: go
0930: 74 20 25 67 20 69 6e 73 74 65 61 64 20 6f 66 20  t %g instead of 
0940: 31 2e 30 5c 6e 22 2c 0a 09 09 6d 70 66 72 5f 67  1.0\n",...mpfr_g
0950: 65 74 5f 64 31 20 28 78 29 29 3b 0a 20 20 20 20  et_d1 (x));.    
0960: 20 20 20 65 78 69 74 20 28 31 29 3b 0a 20 20 20     exit (1);.   
0970: 20 20 7d 0a 0a 20 20 6d 70 66 72 5f 69 6e 69 74    }..  mpfr_init
0980: 32 28 7a 2c 20 33 32 29 3b 0a 20 20 6d 70 66 72  2(z, 32);.  mpfr
0990: 5f 73 65 74 5f 64 28 7a 2c 20 31 2e 30 2c 20 30  _set_d(z, 1.0, 0
09a0: 29 3b 0a 20 20 69 66 20 28 6d 70 66 72 5f 67 65  );.  if (mpfr_ge
09b0: 74 5f 64 31 20 28 7a 29 20 21 3d 20 31 2e 30 29  t_d1 (z) != 1.0)
09c0: 20 7b 0a 20 20 20 20 6d 70 66 72 5f 70 72 69 6e   {.    mpfr_prin
09d0: 74 5f 62 69 6e 61 72 79 28 7a 29 3b 20 70 75 74  t_binary(z); put
09e0: 63 68 61 72 28 27 5c 6e 27 29 3b 0a 20 20 20 20  char('\n');.    
09f0: 70 72 69 6e 74 66 28 22 45 72 72 6f 72 3a 20 31  printf("Error: 1
0a00: 2e 30 20 21 3d 20 31 2e 30 5c 6e 22 29 3b 20 65  .0 != 1.0\n"); e
0a10: 78 69 74 28 31 29 3b 0a 20 20 7d 0a 20 20 6d 70  xit(1);.  }.  mp
0a20: 66 72 5f 73 65 74 5f 70 72 65 63 28 78 2c 20 35  fr_set_prec(x, 5
0a30: 33 29 3b 20 6d 70 66 72 5f 69 6e 69 74 32 28 79  3); mpfr_init2(y
0a40: 2c 20 35 33 29 3b 0a 20 20 6d 70 66 72 5f 73 65  , 53);.  mpfr_se
0a50: 74 5f 64 28 78 2c 20 64 3d 2d 31 2e 30 38 30 30  t_d(x, d=-1.0800
0a60: 37 39 32 30 33 35 32 33 32 30 30 38 39 37 32 31  7920352320089721
0a70: 65 2b 31 35 30 2c 20 30 29 3b 0a 20 20 69 66 20  e+150, 0);.  if 
0a80: 28 6d 70 66 72 5f 67 65 74 5f 64 31 20 28 78 29  (mpfr_get_d1 (x)
0a90: 20 21 3d 20 64 29 20 7b 0a 20 20 20 20 6d 70 66   != d) {.    mpf
0aa0: 72 5f 70 72 69 6e 74 5f 62 69 6e 61 72 79 28 78  r_print_binary(x
0ab0: 29 3b 20 70 75 74 63 68 61 72 28 27 5c 6e 27 29  ); putchar('\n')
0ac0: 3b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 45 72  ;.    printf("Er
0ad0: 72 6f 72 3a 20 67 65 74 5f 64 20 6f 20 73 65 74  ror: get_d o set
0ae0: 5f 64 20 3c 3e 20 69 64 65 6e 74 69 74 79 20 66  _d <> identity f
0af0: 6f 72 20 64 20 3d 20 25 31 2e 32 30 65 20 25 31  or d = %1.20e %1
0b00: 2e 32 30 65 5c 6e 22 2c 64 2c 0a 09 20 20 20 6d  .20e\n",d,..   m
0b10: 70 66 72 5f 67 65 74 5f 64 31 20 28 78 29 29 3b  pfr_get_d1 (x));
0b20: 20 65 78 69 74 28 31 29 3b 0a 20 20 7d 0a 0a 20   exit(1);.  }.. 
0b30: 20 53 45 45 44 5f 52 41 4e 44 20 28 74 69 6d 65   SEED_RAND (time
0b40: 28 4e 55 4c 4c 29 29 3b 0a 20 20 6d 70 66 72 5f  (NULL));.  mpfr_
0b50: 73 65 74 5f 64 28 78 2c 20 38 2e 30 36 32 39 34  set_d(x, 8.06294
0b60: 37 34 30 36 39 33 30 37 34 35 32 31 35 37 33 65  740693074521573e
0b70: 2d 33 31 30 2c 20 30 29 3b 20 0a 20 20 64 20 3d  -310, 0); .  d =
0b80: 20 2d 36 2e 37 32 36 35 38 39 30 31 31 31 34 30   -6.726589011140
0b90: 33 33 37 31 35 32 33 33 65 2d 31 36 35 3b 0a 20  33715233e-165;. 
0ba0: 20 6d 70 66 72 5f 73 65 74 5f 64 28 78 2c 20 64   mpfr_set_d(x, d
0bb0: 2c 20 30 29 3b 0a 20 20 69 66 20 28 64 20 21 3d  , 0);.  if (d !=
0bc0: 20 6d 70 66 72 5f 67 65 74 5f 64 31 20 28 78 29   mpfr_get_d1 (x)
0bd0: 29 20 7b 0a 20 20 20 20 6d 70 66 72 5f 70 72 69  ) {.    mpfr_pri
0be0: 6e 74 5f 62 69 6e 61 72 79 28 78 29 3b 20 70 75  nt_binary(x); pu
0bf0: 74 63 68 61 72 28 27 5c 6e 27 29 3b 0a 20 20 20  tchar('\n');.   
0c00: 20 70 72 69 6e 74 66 28 22 45 72 72 6f 72 3a 20   printf("Error: 
0c10: 67 65 74 5f 64 20 6f 20 73 65 74 5f 64 20 3c 3e  get_d o set_d <>
0c20: 20 69 64 65 6e 74 69 74 79 20 66 6f 72 20 64 20   identity for d 
0c30: 3d 20 25 31 2e 32 30 65 20 25 31 2e 32 30 65 5c  = %1.20e %1.20e\
0c40: 6e 22 2c 64 2c 0a 09 20 20 20 6d 70 66 72 5f 67  n",d,..   mpfr_g
0c50: 65 74 5f 64 31 20 28 78 29 29 3b 20 65 78 69 74  et_d1 (x)); exit
0c60: 28 31 29 3b 0a 20 20 7d 0a 20 20 6e 20 3d 20 28  (1);.  }.  n = (
0c70: 61 72 67 63 3d 3d 31 29 20 3f 20 31 30 30 30 30  argc==1) ? 10000
0c80: 30 30 20 3a 20 61 74 6f 69 28 61 72 67 76 5b 31  00 : atoi(argv[1
0c90: 5d 29 3b 0a 20 20 66 6f 72 20 28 6b 20 3d 20 31  ]);.  for (k = 1
0ca0: 3b 20 6b 20 3c 3d 20 6e 3b 20 6b 2b 2b 29 0a 20  ; k <= n; k++). 
0cb0: 20 20 20 7b 20 20 20 20 20 20 0a 20 20 20 20 20     {      .     
0cc0: 20 64 6f 0a 09 7b 0a 09 20 20 64 20 3d 20 64 72   do..{..  d = dr
0cd0: 61 6e 64 28 29 3b 0a 09 7d 0a 23 69 66 64 65 66  and();..}.#ifdef
0ce0: 20 48 41 56 45 5f 44 45 4e 4f 52 4d 53 0a 20 20   HAVE_DENORMS.  
0cf0: 20 20 20 20 77 68 69 6c 65 20 28 30 29 3b 0a 23      while (0);.#
0d00: 65 6c 73 65 0a 20 20 20 20 20 20 77 68 69 6c 65  else.      while
0d10: 20 28 41 42 53 28 64 29 20 3c 3d 20 32 2e 32 65   (ABS(d) <= 2.2e
0d20: 2d 33 30 37 29 3b 0a 23 65 6e 64 69 66 0a 20 20  -307);.#endif.  
0d30: 20 20 20 20 6d 70 66 72 5f 73 65 74 5f 64 20 28      mpfr_set_d (
0d40: 78 2c 20 64 2c 20 30 29 3b 0a 20 20 20 20 20 20  x, d, 0);.      
0d50: 64 64 20 3d 20 6d 70 66 72 5f 67 65 74 5f 64 31  dd = mpfr_get_d1
0d60: 20 28 78 29 3b 0a 20 20 20 20 20 20 69 66 20 28   (x);.      if (
0d70: 64 20 21 3d 20 64 64 20 26 26 20 28 21 69 73 6e  d != dd && (!isn
0d80: 61 6e 28 64 29 20 7c 7c 20 21 69 73 6e 61 6e 28  an(d) || !isnan(
0d90: 64 64 29 29 29 0a 09 7b 20 0a 09 20 20 66 70 72  dd)))..{ ..  fpr
0da0: 69 6e 74 66 28 73 74 64 65 72 72 2c 20 0a 09 09  intf(stderr, ...
0db0: 20 20 22 4d 69 73 6d 61 74 63 68 20 6f 6e 20 3a    "Mismatch on :
0dc0: 20 25 31 2e 31 38 67 20 21 3d 20 25 31 2e 31 38   %1.18g != %1.18
0dd0: 67 5c 6e 22 2c 20 64 2c 20 6d 70 66 72 5f 67 65  g\n", d, mpfr_ge
0de0: 74 5f 64 31 20 28 78 29 29 3b 20 0a 09 20 20 6d  t_d1 (x)); ..  m
0df0: 70 66 72 5f 70 72 69 6e 74 5f 62 69 6e 61 72 79  pfr_print_binary
0e00: 28 78 29 3b 20 70 75 74 63 68 61 72 28 27 5c 6e  (x); putchar('\n
0e10: 27 29 3b 0a 09 20 20 65 78 69 74 28 31 29 3b 0a  ');..  exit(1);.
0e20: 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 6d 70 66 72  .}.    }..  mpfr
0e30: 5f 63 6c 65 61 72 28 78 29 3b 20 6d 70 66 72 5f  _clear(x); mpfr_
0e40: 63 6c 65 61 72 28 79 29 3b 20 6d 70 66 72 5f 63  clear(y); mpfr_c
0e50: 6c 65 61 72 28 7a 29 3b 0a 0a 20 20 72 65 74 75  lear(z);..  retu
0e60: 72 6e 20 30 3b 20 0a 7d 0a                       rn 0; .}.