[BACK]Return to tset_str.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gmp / mpfr / tests

Annotation of OpenXM_contrib/gmp/mpfr/tests/tset_str.c, Revision 1.1.1.1

1.1       maekawa     1: /* Test file for mpfr_set_str.
                      2:
                      3: Copyright (C) 1999 PolKA project, Inria Lorraine and Loria
                      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 Library General Public License as published by
                      9: the Free Software Foundation; either version 2 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 Library General Public
                     15: License for more details.
                     16:
                     17: You should have received a copy of the GNU Library 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 <time.h>
                     27:
                     28: #if defined (hpux)
                     29: #define srandom srand48
                     30: #define random mrand48
                     31: #endif
                     32:
                     33: int
                     34: main(int argc, char **argv)
                     35: {
                     36:   mpfr_t x; unsigned long k, bd, nc; char *str, *str2;
                     37:
                     38:   if (argc==2) { /* tset_str <string> */
                     39:     mpfr_init2(x, 53);
                     40:     mpfr_set_str_raw(x, argv[1]);
                     41:     printf("%1.20e\n", mpfr_get_d(x));
                     42:     mpfr_clear(x);
                     43:     exit (0);
                     44:   }
                     45:
                     46:   srandom(time(NULL));
                     47:
                     48:   if (argc > 1) { nc = atoi(argv[1]); } else { nc = 53; }
                     49:   if (nc < 24) { nc = 24; }
                     50:
                     51:   bd = random()&8;
                     52:
                     53:   str2 = str = (char *) malloc (nc*sizeof(char));
                     54:
                     55:   if (bd)
                     56:     {
                     57:       for(k = 1; k <= bd; k++)
                     58:        { *(str2++) = (random() & 1) + '0'; }
                     59:     }
                     60:   else { *(str2++) = '0'; }
                     61:
                     62:   *(str2++) = '.';
                     63:
                     64:   for(k = 1; k < nc - 17 - bd; k++)
                     65:     {
                     66:       *(str2++) = '0' + (random() & 1);
                     67:     }
                     68:
                     69:   *(str2++) = 'e';
                     70:   sprintf(str2, "%d", random() - (1 << 30));
                     71:
                     72:   /* printf("%s\n", str); */
                     73:   mpfr_init2(x, nc + 10);
                     74:   mpfr_set_str_raw(x, str);
                     75:   /* mpfr_print_raw(x); printf("\n");  */
                     76:
                     77:   mpfr_set_prec(x, 53);
                     78:   mpfr_set_str_raw(x, "+110101100.01010000101101000000100111001000101011101110E00");
                     79:
                     80:   mpfr_set_str_raw(x, "1.0");
                     81:   if (mpfr_get_d(x) != 1.0) {
                     82:     fprintf(stderr, "Error in mpfr_set_str_raw for s=1.0\n"); exit(1);
                     83:   }
                     84:
                     85:   mpfr_clear(x); free(str);
                     86:   exit (0);
                     87: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>