summaryrefslogtreecommitdiff
path: root/Build/source/libs/mpfr/mpfr-src/src/print_raw.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/mpfr/mpfr-src/src/print_raw.c')
-rw-r--r--Build/source/libs/mpfr/mpfr-src/src/print_raw.c109
1 files changed, 14 insertions, 95 deletions
diff --git a/Build/source/libs/mpfr/mpfr-src/src/print_raw.c b/Build/source/libs/mpfr/mpfr-src/src/print_raw.c
index b05fcae596b..fd320f5ce16 100644
--- a/Build/source/libs/mpfr/mpfr-src/src/print_raw.c
+++ b/Build/source/libs/mpfr/mpfr-src/src/print_raw.c
@@ -1,5 +1,6 @@
-/* mpfr_print_binary -- print the internal binary representation of a
- floating-point number
+/* mpfr_print_mant_binary -- print the internal binary representation
+ of a significand of floating-point number (for the tests and
+ debugging purpose)
Copyright 1999-2017 Free Software Foundation, Inc.
Contributed by the AriC and Caramba projects, INRIA.
@@ -24,106 +25,24 @@ http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
#include "mpfr-impl.h"
void
-mpfr_fprint_binary (FILE *stream, mpfr_srcptr x)
-{
- if (MPFR_IS_NAN (x))
- {
- fprintf (stream, "@NaN@");
- return;
- }
-
- if (MPFR_SIGN (x) < 0)
- fprintf (stream, "-");
-
- if (MPFR_IS_INF (x))
- fprintf (stream, "@Inf@");
- else if (MPFR_IS_ZERO (x))
- fprintf (stream, "0");
- else
- {
- mp_limb_t *mx;
- mpfr_prec_t px;
- mp_size_t n;
-
- mx = MPFR_MANT (x);
- px = MPFR_PREC (x);
-
- fprintf (stream, "0.");
- for (n = (px - 1) / GMP_NUMB_BITS; ; n--)
- {
- mp_limb_t wd, t;
-
- MPFR_ASSERTN (n >= 0);
- wd = mx[n];
- for (t = MPFR_LIMB_HIGHBIT; t != 0; t >>= 1)
- {
- putc ((wd & t) == 0 ? '0' : '1', stream);
- if (--px == 0)
- {
- mpfr_exp_t ex;
-
- ex = MPFR_GET_EXP (x);
- MPFR_ASSERTN (ex >= LONG_MIN && ex <= LONG_MAX);
- fprintf (stream, "E%ld", (long) ex);
- return;
- }
- }
- }
- }
-}
-
-void
-mpfr_print_binary (mpfr_srcptr x)
-{
- mpfr_fprint_binary (stdout, x);
-}
-
-void
-mpfr_print_mant_binary(const char *str, const mp_limb_t *p, mpfr_prec_t r)
-{
- int i;
- mpfr_prec_t count = 0;
- char c;
- mp_size_t n = MPFR_PREC2LIMBS (r);
-
- printf("%s ", str);
- for(n-- ; n>=0 ; n--)
- {
- for(i = GMP_NUMB_BITS-1 ; i >=0 ; i--)
- {
- c = (p[n] & (((mp_limb_t)1L)<<i)) ? '1' : '0';
- putchar(c);
- count++;
- if (count == r)
- putchar('[');
- }
- putchar('.');
- }
- putchar('\n');
-}
-
-void
-mpfr_dump_mant (const mp_limb_t *p, mpfr_prec_t r, mpfr_prec_t precx,
- mpfr_prec_t error)
+mpfr_print_mant_binary (const char *str, const mp_limb_t *p, mpfr_prec_t r)
{
int i;
mpfr_prec_t count = 0;
- char c;
mp_size_t n = MPFR_PREC2LIMBS (r);
- for(n-- ; n>=0 ; n--)
+ printf ("%s ", str);
+ for (n-- ; n >= 0 ; n--)
{
- for(i = GMP_NUMB_BITS-1 ; i >=0 ; i--)
+ for (i = GMP_NUMB_BITS - 1 ; i >=0 ; i--)
{
- c = (p[n] & (((mp_limb_t)1L)<<i)) ? '1' : '0';
- putchar(c);
- count++;
- if (count == precx)
- putchar (',');
- if (count == error)
- putchar('[');
+ putchar ((p[n] & (MPFR_LIMB_ONE << i)) ? '1' : '0');
+ if (++count == r)
+ putchar ('[');
}
- putchar('.');
+ putchar ('.');
}
- putchar('\n');
+ if (count >= r)
+ putchar (']');
+ putchar ('\n');
}