[a5d67dc] | 1 | Submitted By: Jim Gifford (jim at cross-lfs dot org)
|
---|
| 2 | Date: 2009-04-15
|
---|
| 3 | Initial Package Version: 2.4.1
|
---|
| 4 | Origin: MPFR Website
|
---|
| 5 | Upstream Status: Fixed
|
---|
| 6 | Description: See http://www.mpfr.org Website Under Bugs
|
---|
| 7 |
|
---|
| 8 | diff -Naur mpfr-2.4.1.orig/mpfr-gmp.c mpfr-2.4.1/mpfr-gmp.c
|
---|
| 9 | --- mpfr-2.4.1.orig/mpfr-gmp.c 2009-02-20 01:43:17.000000000 -0800
|
---|
| 10 | +++ mpfr-2.4.1/mpfr-gmp.c 2009-04-15 08:27:58.199729850 -0700
|
---|
| 11 | @@ -301,7 +301,7 @@
|
---|
| 12 | if (linenum != -1)
|
---|
| 13 | fprintf (stderr, "%d: ", linenum);
|
---|
| 14 | }
|
---|
| 15 | - fprintf (stderr, " assertion failed: %s\n", expr);
|
---|
| 16 | + fprintf (stderr, "MPFR assertion failed: %s\n", expr);
|
---|
| 17 | abort();
|
---|
| 18 | }
|
---|
| 19 |
|
---|
| 20 | diff -Naur mpfr-2.4.1.orig/mpfr.h mpfr-2.4.1/mpfr.h
|
---|
| 21 | --- mpfr-2.4.1.orig/mpfr.h 2009-02-25 08:16:08.000000000 -0800
|
---|
| 22 | +++ mpfr-2.4.1/mpfr.h 2009-04-15 08:27:58.203729291 -0700
|
---|
| 23 | @@ -27,7 +27,7 @@
|
---|
| 24 | #define MPFR_VERSION_MAJOR 2
|
---|
| 25 | #define MPFR_VERSION_MINOR 4
|
---|
| 26 | #define MPFR_VERSION_PATCHLEVEL 1
|
---|
| 27 | -#define MPFR_VERSION_STRING "2.4.1"
|
---|
| 28 | +#define MPFR_VERSION_STRING "2.4.1-p5"
|
---|
| 29 |
|
---|
| 30 | /* Macros dealing with MPFR VERSION */
|
---|
| 31 | #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
|
---|
| 32 | diff -Naur mpfr-2.4.1.orig/PATCHES mpfr-2.4.1/PATCHES
|
---|
| 33 | --- mpfr-2.4.1.orig/PATCHES 2009-02-20 01:43:17.000000000 -0800
|
---|
| 34 | +++ mpfr-2.4.1/PATCHES 2009-04-15 08:27:58.203729291 -0700
|
---|
| 35 | @@ -0,0 +1,4 @@
|
---|
| 36 | +zeta_ui-shift
|
---|
| 37 | +vasprintf-mp_limb_t
|
---|
| 38 | +assert
|
---|
| 39 | +remainder-neg
|
---|
| 40 | diff -Naur mpfr-2.4.1.orig/rem1.c mpfr-2.4.1/rem1.c
|
---|
| 41 | --- mpfr-2.4.1.orig/rem1.c 2009-02-20 01:43:17.000000000 -0800
|
---|
| 42 | +++ mpfr-2.4.1/rem1.c 2009-04-15 08:27:58.199729850 -0700
|
---|
| 43 | @@ -170,7 +170,12 @@
|
---|
| 44 | }
|
---|
| 45 |
|
---|
| 46 | if (mpz_cmp_ui (r, 0) == 0)
|
---|
| 47 | - inex = mpfr_set_ui (rem, 0, GMP_RNDN);
|
---|
| 48 | + {
|
---|
| 49 | + inex = mpfr_set_ui (rem, 0, GMP_RNDN);
|
---|
| 50 | + /* take into account sign of x */
|
---|
| 51 | + if (signx < 0)
|
---|
| 52 | + mpfr_neg (rem, rem, GMP_RNDN);
|
---|
| 53 | + }
|
---|
| 54 | else
|
---|
| 55 | {
|
---|
| 56 | if (rnd_q == GMP_RNDN)
|
---|
| 57 | @@ -190,6 +195,9 @@
|
---|
| 58 | *quo += 1;
|
---|
| 59 | }
|
---|
| 60 | }
|
---|
| 61 | + /* take into account sign of x */
|
---|
| 62 | + if (signx < 0)
|
---|
| 63 | + mpz_neg (r, r);
|
---|
| 64 | inex = mpfr_set_z (rem, r, rnd);
|
---|
| 65 | /* if ex > ey, rem should be multiplied by 2^ey, else by 2^ex */
|
---|
| 66 | MPFR_EXP (rem) += (ex > ey) ? ey : ex;
|
---|
| 67 | @@ -198,13 +206,6 @@
|
---|
| 68 | if (quo)
|
---|
| 69 | *quo *= sign;
|
---|
| 70 |
|
---|
| 71 | - /* take into account sign of x */
|
---|
| 72 | - if (signx < 0)
|
---|
| 73 | - {
|
---|
| 74 | - mpfr_neg (rem, rem, GMP_RNDN);
|
---|
| 75 | - inex = -inex;
|
---|
| 76 | - }
|
---|
| 77 | -
|
---|
| 78 | mpz_clear (mx);
|
---|
| 79 | mpz_clear (my);
|
---|
| 80 | mpz_clear (r);
|
---|
| 81 | diff -Naur mpfr-2.4.1.orig/tests/tfprintf.c mpfr-2.4.1/tests/tfprintf.c
|
---|
| 82 | --- mpfr-2.4.1.orig/tests/tfprintf.c 2009-02-20 01:43:15.000000000 -0800
|
---|
| 83 | +++ mpfr-2.4.1/tests/tfprintf.c 2009-04-15 08:27:58.199729850 -0700
|
---|
| 84 | @@ -195,7 +195,7 @@
|
---|
| 85 | check_vfprintf (fout, "a. %Pu, b. %c, c. %Zi%Zn", prec, ch, mpz, &mpz);
|
---|
| 86 | check_length_with_cmp (6, mpz, 17, mpz_cmp_ui (mpz, 17), Zi);
|
---|
| 87 | check_vfprintf (fout, "%% a. %#.0RNg, b. %Qx%Rn, c. %p", mpfr, mpq, &mpfr,
|
---|
| 88 | - &i);
|
---|
| 89 | + (void *) &i);
|
---|
| 90 | check_length_with_cmp (7, mpfr, 16, mpfr_cmp_ui (mpfr, 16), Rg);
|
---|
| 91 |
|
---|
| 92 | #ifndef NPRINTF_T
|
---|
| 93 | diff -Naur mpfr-2.4.1.orig/tests/tprintf.c mpfr-2.4.1/tests/tprintf.c
|
---|
| 94 | --- mpfr-2.4.1.orig/tests/tprintf.c 2009-02-20 01:43:15.000000000 -0800
|
---|
| 95 | +++ mpfr-2.4.1/tests/tprintf.c 2009-04-15 08:27:58.203729291 -0700
|
---|
| 96 | @@ -191,7 +191,8 @@
|
---|
| 97 | check_length (5, sz, 34, zu);
|
---|
| 98 | check_vprintf ("a. %Pu, b. %c, c. %RUG, d. %Zi%Zn", prec, ch, mpfr, mpz, &mpz);
|
---|
| 99 | check_length_with_cmp (6, mpz, 24, mpz_cmp_ui (mpz, 24), Zi);
|
---|
| 100 | - check_vprintf ("%% a. %#.0RNg, b. %Qx%Rn c. %p", mpfr, mpq, &mpfr, &i);
|
---|
| 101 | + check_vprintf ("%% a. %#.0RNg, b. %Qx%Rn c. %p",
|
---|
| 102 | + mpfr, mpq, &mpfr, (void *) &i);
|
---|
| 103 | check_length_with_cmp (7, mpfr, 16, mpfr_cmp_ui (mpfr, 16), Rg);
|
---|
| 104 |
|
---|
| 105 | #ifndef NPRINTF_T
|
---|
| 106 | diff -Naur mpfr-2.4.1.orig/tests/tremquo.c mpfr-2.4.1/tests/tremquo.c
|
---|
| 107 | --- mpfr-2.4.1.orig/tests/tremquo.c 2009-02-20 01:43:15.000000000 -0800
|
---|
| 108 | +++ mpfr-2.4.1/tests/tremquo.c 2009-04-15 08:27:58.199729850 -0700
|
---|
| 109 | @@ -25,6 +25,36 @@
|
---|
| 110 |
|
---|
| 111 | #include "mpfr-test.h"
|
---|
| 112 |
|
---|
| 113 | +static void
|
---|
| 114 | +bug20090227 (void)
|
---|
| 115 | +{
|
---|
| 116 | + mpfr_t x, y, r1, r2;
|
---|
| 117 | + int inex1, inex2;
|
---|
| 118 | +
|
---|
| 119 | + mpfr_init2 (x, 118);
|
---|
| 120 | + mpfr_init2 (y, 181);
|
---|
| 121 | + mpfr_init2 (r1, 140);
|
---|
| 122 | + mpfr_init2 (r2, 140);
|
---|
| 123 | + mpfr_set_si (x, -1, GMP_RNDN);
|
---|
| 124 | + mpfr_set_str_binary (y, "1.100100100001111110110101010001000100001011010001100001000110100110001001100011001100010100010111000000011011100000111001101000100101001000000100100111000001000100010100110011111010");
|
---|
| 125 | + inex1 = mpfr_remainder (r1, x, y, GMP_RNDU);
|
---|
| 126 | + /* since the quotient is -1, r1 is the rounding of x+y */
|
---|
| 127 | + inex2 = mpfr_add (r2, x, y, GMP_RNDU);
|
---|
| 128 | + if (mpfr_cmp (r1, r2))
|
---|
| 129 | + {
|
---|
| 130 | + printf ("Error in mpfr_remainder (bug20090227)\n");
|
---|
| 131 | + printf ("Expected ");
|
---|
| 132 | + mpfr_dump (r2);
|
---|
| 133 | + printf ("Got ");
|
---|
| 134 | + mpfr_dump (r1);
|
---|
| 135 | + exit (1);
|
---|
| 136 | + }
|
---|
| 137 | + mpfr_clear (x);
|
---|
| 138 | + mpfr_clear (y);
|
---|
| 139 | + mpfr_clear (r1);
|
---|
| 140 | + mpfr_clear (r2);
|
---|
| 141 | +}
|
---|
| 142 | +
|
---|
| 143 | int
|
---|
| 144 | main (int argc, char *argv[])
|
---|
| 145 | {
|
---|
| 146 | @@ -50,6 +80,8 @@
|
---|
| 147 |
|
---|
| 148 | tests_start_mpfr ();
|
---|
| 149 |
|
---|
| 150 | + bug20090227 ();
|
---|
| 151 | +
|
---|
| 152 | mpfr_init (x);
|
---|
| 153 | mpfr_init (y);
|
---|
| 154 | mpfr_init (r);
|
---|
| 155 | diff -Naur mpfr-2.4.1.orig/vasprintf.c mpfr-2.4.1/vasprintf.c
|
---|
| 156 | --- mpfr-2.4.1.orig/vasprintf.c 2009-02-20 01:43:17.000000000 -0800
|
---|
| 157 | +++ mpfr-2.4.1/vasprintf.c 2009-04-15 08:27:58.203729291 -0700
|
---|
| 158 | @@ -398,7 +398,7 @@
|
---|
| 159 | (void) va_arg ((ap), mpq_srcptr); \
|
---|
| 160 | break; \
|
---|
| 161 | case MP_LIMB_ARG: \
|
---|
| 162 | - (void) va_arg ((ap), mp_ptr); \
|
---|
| 163 | + (void) va_arg ((ap), mp_limb_t); \
|
---|
| 164 | break; \
|
---|
| 165 | case MP_LIMB_ARRAY_ARG: \
|
---|
| 166 | (void) va_arg ((ap), mp_ptr); \
|
---|
| 167 | diff -Naur mpfr-2.4.1.orig/VERSION mpfr-2.4.1/VERSION
|
---|
| 168 | --- mpfr-2.4.1.orig/VERSION 2009-02-25 08:16:08.000000000 -0800
|
---|
| 169 | +++ mpfr-2.4.1/VERSION 2009-04-15 08:27:58.203729291 -0700
|
---|
| 170 | @@ -1 +1 @@
|
---|
| 171 | -2.4.1
|
---|
| 172 | +2.4.1-p5
|
---|
| 173 | diff -Naur mpfr-2.4.1.orig/version.c mpfr-2.4.1/version.c
|
---|
| 174 | --- mpfr-2.4.1.orig/version.c 2009-02-25 08:16:08.000000000 -0800
|
---|
| 175 | +++ mpfr-2.4.1/version.c 2009-04-15 08:27:58.203729291 -0700
|
---|
| 176 | @@ -25,5 +25,5 @@
|
---|
| 177 | const char *
|
---|
| 178 | mpfr_get_version (void)
|
---|
| 179 | {
|
---|
| 180 | - return "2.4.1";
|
---|
| 181 | + return "2.4.1-p5";
|
---|
| 182 | }
|
---|
| 183 | diff -Naur mpfr-2.4.1.orig/zeta_ui.c mpfr-2.4.1/zeta_ui.c
|
---|
| 184 | --- mpfr-2.4.1.orig/zeta_ui.c 2009-02-20 01:43:17.000000000 -0800
|
---|
| 185 | +++ mpfr-2.4.1/zeta_ui.c 2009-04-15 08:27:58.203729291 -0700
|
---|
| 186 | @@ -177,7 +177,9 @@
|
---|
| 187 | mpz_mul_ui (t, t, 2 * k - 1);
|
---|
| 188 | }
|
---|
| 189 | mpz_div_2exp (t, t, 1);
|
---|
| 190 | - if (n < 1UL << (BITS_PER_MP_LIMB / 2))
|
---|
| 191 | + /* Warning: the test below assumes that an unsigned long
|
---|
| 192 | + has no padding bits. */
|
---|
| 193 | + if (n < 1UL << ((sizeof(unsigned long) * CHAR_BIT) / 2))
|
---|
| 194 | /* (n - k + 1) * (n + k - 1) < n^2 */
|
---|
| 195 | mpz_divexact_ui (t, t, (n - k + 1) * (n + k - 1));
|
---|
| 196 | else
|
---|