 Timestamp:
 03/10/14 19:24:30 (11 years ago)
 Branches:
 clfs3.0.0systemd, clfs3.0.0sysvinit, master, systemd, sysvinit
 Children:
 b2bbca4
 Parents:
 9d71b20
 File:

 1 moved
Legend:
 Unmodified
 Added
 Removed

patches/mpfr3.1.2fixes2.patch
r9d71b20 rc8b646b 1 1 Submitted By: William Harrington (kb0iic at crosslfs dot org) 2 Date: 201 311112 Date: 20140310 3 3 Initial Package Version: 3.1.2 4 4 Origin: Upstream 5 5 Upstream Status: Applied 6 Description: Contains all upstream patches of mpfr current .6 Description: Contains all upstream patches of mpfr current to patch level 5. 7 7 8 diff Naur mpfr3.1.2.orig/PATCHES mpfr3.1.2/PATCHES 9  mpfr3.1.2.orig/PATCHES 20130313 15:37:38.000000000 +0000 10 +++ mpfr3.1.2/PATCHES 20131111 23:55:16.818732551 +0000 11 @@ 0,0 +1,3 @@ 12 +clangdivby0 13 +fitssmallneg 8 diff Naurd mpfr3.1.2a/PATCHES mpfr3.1.2b/PATCHES 9  mpfr3.1.2a/PATCHES 20130926 10:52:52.000000000 +0000 10 +++ mpfr3.1.2b/PATCHES 20130926 10:52:52.000000000 +0000 11 @@ 0,0 +1 @@ 14 12 +exp_2 15 diff Naur mpfr3.1.2.orig/VERSION mpfr3.1.2/VERSION16  mpfr3.1.2 .orig/VERSION 20130313 15:37:28.000000000 +000017 +++ mpfr3.1.2 /VERSION 20131111 23:55:16.818732551+000013 diff Naurd mpfr3.1.2a/VERSION mpfr3.1.2b/VERSION 14  mpfr3.1.2a/VERSION 20130313 15:37:28.000000000 +0000 15 +++ mpfr3.1.2b/VERSION 20130926 10:52:52.000000000 +0000 18 16 @@ 1 +1 @@ 19 17 3.1.2 20 +3.1.2p 321 diff Naur mpfr3.1.2.orig/src/exp_2.c mpfr3.1.2/src/exp_2.c22  mpfr3.1.2 .orig/src/exp_2.c 20130313 15:37:28.000000000 +000023 +++ mpfr3.1.2 /src/exp_2.c 20131111 23:55:16.810732551+000018 +3.1.2p1 19 diff Naurd mpfr3.1.2a/src/exp_2.c mpfr3.1.2b/src/exp_2.c 20  mpfr3.1.2a/src/exp_2.c 20130313 15:37:28.000000000 +0000 21 +++ mpfr3.1.2b/src/exp_2.c 20130926 10:52:52.000000000 +0000 24 22 @@ 204,7 +204,7 @@ 25 23 for (k = 0; k < K; k++) … … 31 29 } 32 30 mpfr_set_z (s, ss, MPFR_RNDN); 33 diff Naur mpfr3.1.2.orig/src/fits_u.h mpfr3.1.2/src/fits_u.h 34  mpfr3.1.2.orig/src/fits_u.h 20130313 15:37:35.000000000 +0000 35 +++ mpfr3.1.2/src/fits_u.h 20131111 23:55:16.818732551 +0000 31 diff Naurd mpfr3.1.2a/src/mpfr.h mpfr3.1.2b/src/mpfr.h 32  mpfr3.1.2a/src/mpfr.h 20130313 15:37:37.000000000 +0000 33 +++ mpfr3.1.2b/src/mpfr.h 20130926 10:52:52.000000000 +0000 34 @@ 27,7 +27,7 @@ 35 #define MPFR_VERSION_MAJOR 3 36 #define MPFR_VERSION_MINOR 1 37 #define MPFR_VERSION_PATCHLEVEL 2 38 #define MPFR_VERSION_STRING "3.1.2" 39 +#define MPFR_VERSION_STRING "3.1.2p1" 40 41 /* Macros dealing with MPFR VERSION */ 42 #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L)  ((b) << 8)  (c)) 43 diff Naurd mpfr3.1.2a/src/version.c mpfr3.1.2b/src/version.c 44  mpfr3.1.2a/src/version.c 20130313 15:37:34.000000000 +0000 45 +++ mpfr3.1.2b/src/version.c 20130926 10:52:52.000000000 +0000 46 @@ 25,5 +25,5 @@ 47 const char * 48 mpfr_get_version (void) 49 { 50  return "3.1.2"; 51 + return "3.1.2p1"; 52 } 53 diff Naurd mpfr3.1.2a/PATCHES mpfr3.1.2b/PATCHES 54  mpfr3.1.2a/PATCHES 20130926 10:56:55.000000000 +0000 55 +++ mpfr3.1.2b/PATCHES 20130926 10:56:55.000000000 +0000 56 @@ 0,0 +1 @@ 57 +fitssmallneg 58 diff Naurd mpfr3.1.2a/VERSION mpfr3.1.2b/VERSION 59  mpfr3.1.2a/VERSION 20130926 10:52:52.000000000 +0000 60 +++ mpfr3.1.2b/VERSION 20130926 10:56:55.000000000 +0000 61 @@ 1 +1 @@ 62 3.1.2p1 63 +3.1.2p2 64 diff Naurd mpfr3.1.2a/src/fits_u.h mpfr3.1.2b/src/fits_u.h 65  mpfr3.1.2a/src/fits_u.h 20130313 15:37:35.000000000 +0000 66 +++ mpfr3.1.2b/src/fits_u.h 20130926 10:56:55.000000000 +0000 36 67 @@ 32,17 +32,20 @@ 37 68 int res; … … 63 94 for (s = MAXIMUM, prec = 0; s != 0; s /= 2, prec ++); 64 95 65 diff Naur mpfr3.1.2.orig/src/fits_uintmax.c mpfr3.1.2/src/fits_uintmax.c66  mpfr3.1.2 .orig/src/fits_uintmax.c 20130313 15:37:33.000000000 +000067 +++ mpfr3.1.2 /src/fits_uintmax.c 20131111 23:55:16.818732551+000096 diff Naurd mpfr3.1.2a/src/fits_uintmax.c mpfr3.1.2b/src/fits_uintmax.c 97  mpfr3.1.2a/src/fits_uintmax.c 20130313 15:37:33.000000000 +0000 98 +++ mpfr3.1.2b/src/fits_uintmax.c 20130926 10:56:55.000000000 +0000 68 99 @@ 27,51 +27,19 @@ 69 100 #include "mpfrintmax.h" … … 93 124  94 125  e = MPFR_GET_EXP (f); 95 +/* Note: though mpfrimpl.h is included in fits_u.h, we also include it 96 + above so that it gets included even when _MPFR_H_HAVE_INTMAX_T is not 97 + defined; this is necessary to avoid an empty translation unit, which 98 + is forbidden by ISO C. Without this, a failing test can be reproduced 99 + by creating an invalid stdint.h somewhere in the default include path 100 + and by compiling MPFR with "gcc ansi pedanticerrors". */ 101 126  102 127  /* first compute prec(MAXIMUM); fits in an int */ 103 128  for (s = MPFR_UINTMAX_MAX, prec = 0; s != 0; s /= 2, prec ++); … … 108 133  if (e <= prec  1) 109 134  return 1; 110  135 +/* Note: though mpfrimpl.h is included in fits_u.h, we also include it 136 + above so that it gets included even when _MPFR_H_HAVE_INTMAX_T is not 137 + defined; this is necessary to avoid an empty translation unit, which 138 + is forbidden by ISO C. Without this, a failing test can be reproduced 139 + by creating an invalid stdint.h somewhere in the default include path 140 + and by compiling MPFR with "gcc ansi pedanticerrors". */ 141 111 142  /* if e >= prec + 1, then f >= 2^prec > MAXIMUM */ 112 143  if (e >= prec + 1) … … 129 160 130 161 #endif 131 diff Naur mpfr3.1.2.orig/src/mpfrimpl.h mpfr3.1.2/src/mpfrimpl.h 132  mpfr3.1.2.orig/src/mpfrimpl.h 20130313 15:37:36.000000000 +0000 133 +++ mpfr3.1.2/src/mpfrimpl.h 20131111 23:55:16.818732551 +0000 134 @@ 468,8 +468,16 @@ 135 #define MPFR_LIMBS_PER_FLT ((IEEE_FLT_MANT_DIG1)/GMP_NUMB_BITS+1) 136 137 /* Visual C++ doesn't support +1.0/0.0, 1.0/0.0 and 0.0/0.0 138  at compile time. */ 139 #if defined(_MSC_VER) && defined(_WIN32) && (_MSC_VER >= 1200) 140 + at compile time. 141 + Clang with fsanitize=undefined is a bit similar due to a bug: 142 + http://llvm.org/bugs/show_bug.cgi?id=17381 143 + but even without its sanitizer, it may be better to use the 144 + double_zero version until IEEE 754 division by zero is properly 145 + supported: 146 + http://llvm.org/bugs/show_bug.cgi?id=17000 147 +*/ 148 +#if (defined(_MSC_VER) && defined(_WIN32) && (_MSC_VER >= 1200))  \ 149 + defined(__clang__) 150 static double double_zero = 0.0; 151 # define DBL_NAN (double_zero/double_zero) 152 # define DBL_POS_INF ((double) 1.0/double_zero) 153 @@ 501,6 +509,8 @@ 154 (with Xcode 2.4.1, i.e. the latest one). */ 155 #define LVALUE(x) (&(x) == &(x)  &(x) != &(x)) 156 #define DOUBLE_ISINF(x) (LVALUE(x) && ((x) > DBL_MAX  (x) < DBL_MAX)) 157 +/* The DOUBLE_ISNAN(x) macro is also valid on long double x 158 + (assuming that the compiler isn't too broken). */ 159 #ifdef MPFR_NANISNAN 160 /* Avoid MIPSpro / IRIX64 / gcc ffastmath (incorrect) optimizations. 161 The + must not be replaced by a . With gcc ffastmath, NaN is 162 diff Naur mpfr3.1.2.orig/src/mpfr.h mpfr3.1.2/src/mpfr.h 163  mpfr3.1.2.orig/src/mpfr.h 20130313 15:37:37.000000000 +0000 164 +++ mpfr3.1.2/src/mpfr.h 20131111 23:55:16.818732551 +0000 162 diff Naurd mpfr3.1.2a/src/mpfr.h mpfr3.1.2b/src/mpfr.h 163  mpfr3.1.2a/src/mpfr.h 20130926 10:52:52.000000000 +0000 164 +++ mpfr3.1.2b/src/mpfr.h 20130926 10:56:55.000000000 +0000 165 165 @@ 27,7 +27,7 @@ 166 166 #define MPFR_VERSION_MAJOR 3 167 167 #define MPFR_VERSION_MINOR 1 168 168 #define MPFR_VERSION_PATCHLEVEL 2 169 #define MPFR_VERSION_STRING "3.1.2 "170 +#define MPFR_VERSION_STRING "3.1.2p 3"169 #define MPFR_VERSION_STRING "3.1.2p1" 170 +#define MPFR_VERSION_STRING "3.1.2p2" 171 171 172 172 /* Macros dealing with MPFR VERSION */ 173 173 #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L)  ((b) << 8)  (c)) 174 diff Naur mpfr3.1.2.orig/src/version.c mpfr3.1.2/src/version.c175  mpfr3.1.2 .orig/src/version.c 20130313 15:37:34.000000000 +0000176 +++ mpfr3.1.2 /src/version.c 20131111 23:55:16.818732551+0000174 diff Naurd mpfr3.1.2a/src/version.c mpfr3.1.2b/src/version.c 175  mpfr3.1.2a/src/version.c 20130926 10:52:52.000000000 +0000 176 +++ mpfr3.1.2b/src/version.c 20130926 10:56:55.000000000 +0000 177 177 @@ 25,5 +25,5 @@ 178 178 const char * 179 179 mpfr_get_version (void) 180 180 { 181  return "3.1.2 ";182 + return "3.1.2p 3";181  return "3.1.2p1"; 182 + return "3.1.2p2"; 183 183 } 184 diff Naur mpfr3.1.2.orig/tests/tfits.c mpfr3.1.2/tests/tfits.c185  mpfr3.1.2 .orig/tests/tfits.c 20130313 15:37:45.000000000 +0000186 +++ mpfr3.1.2 /tests/tfits.c 20131111 23:55:16.818732551+0000184 diff Naurd mpfr3.1.2a/tests/tfits.c mpfr3.1.2b/tests/tfits.c 185  mpfr3.1.2a/tests/tfits.c 20130313 15:37:45.000000000 +0000 186 +++ mpfr3.1.2b/tests/tfits.c 20130926 10:56:55.000000000 +0000 187 187 @@ 33,155 +33,176 @@ 188 188 #include "mpfrintmax.h" … … 229 229  if (mpfr_fits_sshort_p (x, MPFR_RNDN)) 230 230  ERROR1; 231  231 + RND_LOOP (r) 232 + { 233 232 234  /* Check INF */ 233 235  mpfr_set_inf (x, 1); … … 244 246  if (mpfr_fits_sshort_p (x, MPFR_RNDN)) 245 247  ERROR1; 246 247  /* Check Zero */248  MPFR_SET_ZERO (x);249  if (!mpfr_fits_ulong_p (x, MPFR_RNDN))250  ERROR2;251  if (!mpfr_fits_slong_p (x, MPFR_RNDN))252  ERROR2;253  if (!mpfr_fits_uint_p (x, MPFR_RNDN))254  ERROR2;255  if (!mpfr_fits_sint_p (x, MPFR_RNDN))256  ERROR2;257  if (!mpfr_fits_ushort_p (x, MPFR_RNDN))258  ERROR2;259  if (!mpfr_fits_sshort_p (x, MPFR_RNDN))260  ERROR2;261 262  /* Check small op */263  mpfr_set_str1 (x, "1@1");264  if (!mpfr_fits_ulong_p (x, MPFR_RNDN))265  ERROR2;266  if (!mpfr_fits_slong_p (x, MPFR_RNDN))267  ERROR2;268  if (!mpfr_fits_uint_p (x, MPFR_RNDN))269  ERROR2;270  if (!mpfr_fits_sint_p (x, MPFR_RNDN))271  ERROR2;272  if (!mpfr_fits_ushort_p (x, MPFR_RNDN))273  ERROR2;274  if (!mpfr_fits_sshort_p (x, MPFR_RNDN))275  ERROR2;276 277  /* Check 17 */278  mpfr_set_ui (x, 17, MPFR_RNDN);279  if (!mpfr_fits_ulong_p (x, MPFR_RNDN))280  ERROR2;281  if (!mpfr_fits_slong_p (x, MPFR_RNDN))282  ERROR2;283  if (!mpfr_fits_uint_p (x, MPFR_RNDN))284  ERROR2;285  if (!mpfr_fits_sint_p (x, MPFR_RNDN))286  ERROR2;287  if (!mpfr_fits_ushort_p (x, MPFR_RNDN))288  ERROR2;289  if (!mpfr_fits_sshort_p (x, MPFR_RNDN))290  ERROR2;291 292  /* Check all other values */293  mpfr_set_ui (x, ULONG_MAX, MPFR_RNDN);294  mpfr_mul_2exp (x, x, 1, MPFR_RNDN);295  if (mpfr_fits_ulong_p (x, MPFR_RNDN))296  ERROR1;297  if (mpfr_fits_slong_p (x, MPFR_RNDN))298  ERROR1;299  mpfr_mul_2exp (x, x, 40, MPFR_RNDN);300  if (mpfr_fits_ulong_p (x, MPFR_RNDN))301  ERROR1;302  if (mpfr_fits_uint_p (x, MPFR_RNDN))303  ERROR1;304  if (mpfr_fits_sint_p (x, MPFR_RNDN))305  ERROR1;306  if (mpfr_fits_ushort_p (x, MPFR_RNDN))307  ERROR1;308  if (mpfr_fits_sshort_p (x, MPFR_RNDN))309  ERROR1;310 311  mpfr_set_ui (x, ULONG_MAX, MPFR_RNDN);312  if (!mpfr_fits_ulong_p (x, MPFR_RNDN))313  ERROR2;314  mpfr_set_ui (x, LONG_MAX, MPFR_RNDN);315  if (!mpfr_fits_slong_p (x, MPFR_RNDN))316  ERROR2;317  mpfr_set_ui (x, UINT_MAX, MPFR_RNDN);318  if (!mpfr_fits_uint_p (x, MPFR_RNDN))319  ERROR2;320  mpfr_set_ui (x, INT_MAX, MPFR_RNDN);321  if (!mpfr_fits_sint_p (x, MPFR_RNDN))322  ERROR2;323  mpfr_set_ui (x, USHRT_MAX, MPFR_RNDN);324  if (!mpfr_fits_ushort_p (x, MPFR_RNDN))325  ERROR2;326  mpfr_set_ui (x, SHRT_MAX, MPFR_RNDN);327  if (!mpfr_fits_sshort_p (x, MPFR_RNDN))328  ERROR2;329 330  mpfr_set_si (x, 1, MPFR_RNDN);331  if (!mpfr_fits_sint_p (x, MPFR_RNDN))332  ERROR2;333  if (!mpfr_fits_sshort_p (x, MPFR_RNDN))334  ERROR2;335 336  /* Check negative value */337  mpfr_set_si (x, 1, MPFR_RNDN);338  if (!mpfr_fits_sint_p (x, MPFR_RNDN))339  ERROR2;340  if (!mpfr_fits_sshort_p (x, MPFR_RNDN))341  ERROR2;342  if (!mpfr_fits_slong_p (x, MPFR_RNDN))343  ERROR2;344  if (mpfr_fits_uint_p (x, MPFR_RNDN))345  ERROR1;346  if (mpfr_fits_ushort_p (x, MPFR_RNDN))347  ERROR1;348  if (mpfr_fits_ulong_p (x, MPFR_RNDN))349  ERROR1;350 + RND_LOOP (r)351 + {352 +353 248 + /* Check NAN */ 354 249 + mpfr_set_nan (x); … … 365 260 + if (mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) 366 261 + ERROR1 (6); 367 + 262 263  /* Check Zero */ 264  MPFR_SET_ZERO (x); 265  if (!mpfr_fits_ulong_p (x, MPFR_RNDN)) 266  ERROR2; 267  if (!mpfr_fits_slong_p (x, MPFR_RNDN)) 268  ERROR2; 269  if (!mpfr_fits_uint_p (x, MPFR_RNDN)) 270  ERROR2; 271  if (!mpfr_fits_sint_p (x, MPFR_RNDN)) 272  ERROR2; 273  if (!mpfr_fits_ushort_p (x, MPFR_RNDN)) 274  ERROR2; 275  if (!mpfr_fits_sshort_p (x, MPFR_RNDN)) 276  ERROR2; 368 277 + /* Check INF */ 369 278 + mpfr_set_inf (x, 1); … … 380 289 + if (mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) 381 290 + ERROR1 (12); 382 + 291 292  /* Check small op */ 293  mpfr_set_str1 (x, "1@1"); 294  if (!mpfr_fits_ulong_p (x, MPFR_RNDN)) 295  ERROR2; 296  if (!mpfr_fits_slong_p (x, MPFR_RNDN)) 297  ERROR2; 298  if (!mpfr_fits_uint_p (x, MPFR_RNDN)) 299  ERROR2; 300  if (!mpfr_fits_sint_p (x, MPFR_RNDN)) 301  ERROR2; 302  if (!mpfr_fits_ushort_p (x, MPFR_RNDN)) 303  ERROR2; 304  if (!mpfr_fits_sshort_p (x, MPFR_RNDN)) 305  ERROR2; 383 306 + /* Check Zero */ 384 307 + MPFR_SET_ZERO (x); … … 395 318 + if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) 396 319 + ERROR1 (18); 397 + 320 321  /* Check 17 */ 322  mpfr_set_ui (x, 17, MPFR_RNDN); 323  if (!mpfr_fits_ulong_p (x, MPFR_RNDN)) 324  ERROR2; 325  if (!mpfr_fits_slong_p (x, MPFR_RNDN)) 326  ERROR2; 327  if (!mpfr_fits_uint_p (x, MPFR_RNDN)) 328  ERROR2; 329  if (!mpfr_fits_sint_p (x, MPFR_RNDN)) 330  ERROR2; 331  if (!mpfr_fits_ushort_p (x, MPFR_RNDN)) 332  ERROR2; 333  if (!mpfr_fits_sshort_p (x, MPFR_RNDN)) 334  ERROR2; 398 335 + /* Check small positive op */ 399 336 + mpfr_set_str1 (x, "1@1"); … … 410 347 + if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) 411 348 + ERROR1 (24); 412 + 349 350  /* Check all other values */ 351  mpfr_set_ui (x, ULONG_MAX, MPFR_RNDN); 352  mpfr_mul_2exp (x, x, 1, MPFR_RNDN); 353  if (mpfr_fits_ulong_p (x, MPFR_RNDN)) 354  ERROR1; 355  if (mpfr_fits_slong_p (x, MPFR_RNDN)) 356  ERROR1; 357  mpfr_mul_2exp (x, x, 40, MPFR_RNDN); 358  if (mpfr_fits_ulong_p (x, MPFR_RNDN)) 359  ERROR1; 360  if (mpfr_fits_uint_p (x, MPFR_RNDN)) 361  ERROR1; 362  if (mpfr_fits_sint_p (x, MPFR_RNDN)) 363  ERROR1; 364  if (mpfr_fits_ushort_p (x, MPFR_RNDN)) 365  ERROR1; 366  if (mpfr_fits_sshort_p (x, MPFR_RNDN)) 367  ERROR1; 413 368 + /* Check 17 */ 414 369 + mpfr_set_ui (x, 17, MPFR_RNDN); … … 425 380 + if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) 426 381 + ERROR1 (30); 427 + 382 383  mpfr_set_ui (x, ULONG_MAX, MPFR_RNDN); 384  if (!mpfr_fits_ulong_p (x, MPFR_RNDN)) 385  ERROR2; 386  mpfr_set_ui (x, LONG_MAX, MPFR_RNDN); 387  if (!mpfr_fits_slong_p (x, MPFR_RNDN)) 388  ERROR2; 389  mpfr_set_ui (x, UINT_MAX, MPFR_RNDN); 390  if (!mpfr_fits_uint_p (x, MPFR_RNDN)) 391  ERROR2; 392  mpfr_set_ui (x, INT_MAX, MPFR_RNDN); 393  if (!mpfr_fits_sint_p (x, MPFR_RNDN)) 394  ERROR2; 395  mpfr_set_ui (x, USHRT_MAX, MPFR_RNDN); 396  if (!mpfr_fits_ushort_p (x, MPFR_RNDN)) 397  ERROR2; 398  mpfr_set_ui (x, SHRT_MAX, MPFR_RNDN); 399  if (!mpfr_fits_sshort_p (x, MPFR_RNDN)) 400  ERROR2; 428 401 + /* Check all other values */ 429 402 + mpfr_set_ui (x, ULONG_MAX, MPFR_RNDN); … … 444 417 + if (mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) 445 418 + ERROR1 (37); 446 + 419 420  mpfr_set_si (x, 1, MPFR_RNDN); 421  if (!mpfr_fits_sint_p (x, MPFR_RNDN)) 422  ERROR2; 423  if (!mpfr_fits_sshort_p (x, MPFR_RNDN)) 424  ERROR2; 447 425 + mpfr_set_ui (x, ULONG_MAX, MPFR_RNDN); 448 426 + if (!mpfr_fits_ulong_p (x, (mpfr_rnd_t) r)) … … 463 441 + if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r)) 464 442 + ERROR1 (43); 465 + 443 444  /* Check negative value */ 445  mpfr_set_si (x, 1, MPFR_RNDN); 446  if (!mpfr_fits_sint_p (x, MPFR_RNDN)) 447  ERROR2; 448  if (!mpfr_fits_sshort_p (x, MPFR_RNDN)) 449  ERROR2; 450  if (!mpfr_fits_slong_p (x, MPFR_RNDN)) 451  ERROR2; 452  if (mpfr_fits_uint_p (x, MPFR_RNDN)) 453  ERROR1; 454  if (mpfr_fits_ushort_p (x, MPFR_RNDN)) 455  ERROR1; 456  if (mpfr_fits_ulong_p (x, MPFR_RNDN)) 457  ERROR1; 466 458 + mpfr_set_si (x, 1, MPFR_RNDN); 467 459 + if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r)) … … 521 513  if (mpfr_fits_intmax_p (x, MPFR_RNDN)) 522 514  ERROR1; 523 524  /* Check INF */525  mpfr_set_inf (x, 1);526  if (mpfr_fits_uintmax_p (x, MPFR_RNDN))527  ERROR1;528  if (mpfr_fits_intmax_p (x, MPFR_RNDN))529  ERROR1;530 531  /* Check Zero */532  MPFR_SET_ZERO (x);533  if (!mpfr_fits_uintmax_p (x, MPFR_RNDN))534  ERROR2;535  if (!mpfr_fits_intmax_p (x, MPFR_RNDN))536  ERROR2;537 538  /* Check small op */539  mpfr_set_str1 (x, "1@1");540  if (!mpfr_fits_uintmax_p (x, MPFR_RNDN))541  ERROR2;542  if (!mpfr_fits_intmax_p (x, MPFR_RNDN))543  ERROR2;544 545  /* Check 17 */546  mpfr_set_ui (x, 17, MPFR_RNDN);547  if (!mpfr_fits_uintmax_p (x, MPFR_RNDN))548  ERROR2;549  if (!mpfr_fits_intmax_p (x, MPFR_RNDN))550  ERROR2;551 552  /* Check hugest */553  mpfr_set_ui_2exp (x, 42, sizeof (uintmax_t) * 32, MPFR_RNDN);554  if (mpfr_fits_uintmax_p (x, MPFR_RNDN))555  ERROR1;556  if (mpfr_fits_intmax_p (x, MPFR_RNDN))557  ERROR1;558 559  /* Check all other values */560  mpfr_set_uj (x, MPFR_UINTMAX_MAX, MPFR_RNDN);561  mpfr_add_ui (x, x, 1, MPFR_RNDN);562  if (mpfr_fits_uintmax_p (x, MPFR_RNDN))563  ERROR1;564  mpfr_set_uj (x, MPFR_UINTMAX_MAX, MPFR_RNDN);565  if (!mpfr_fits_uintmax_p (x, MPFR_RNDN))566  ERROR2;567  mpfr_set_sj (x, MPFR_INTMAX_MAX, MPFR_RNDN);568  mpfr_add_ui (x, x, 1, MPFR_RNDN);569  if (mpfr_fits_intmax_p (x, MPFR_RNDN))570  ERROR1;571  mpfr_set_sj (x, MPFR_INTMAX_MAX, MPFR_RNDN);572  if (!mpfr_fits_intmax_p (x, MPFR_RNDN))573  ERROR2;574  mpfr_set_sj (x, MPFR_INTMAX_MIN, MPFR_RNDN);575  if (!mpfr_fits_intmax_p (x, MPFR_RNDN))576  ERROR2;577  mpfr_sub_ui (x, x, 1, MPFR_RNDN);578  if (mpfr_fits_intmax_p (x, MPFR_RNDN))579  ERROR1;580 581  /* Check negative value */582  mpfr_set_si (x, 1, MPFR_RNDN);583  if (!mpfr_fits_intmax_p (x, MPFR_RNDN))584  ERROR2;585  if (mpfr_fits_uintmax_p (x, MPFR_RNDN))586  ERROR1;587 515 + RND_LOOP (r) 588 516 + { … … 593 521 + if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) 594 522 + ERROR1 (53); 595 + 523 524  /* Check INF */ 525  mpfr_set_inf (x, 1); 526  if (mpfr_fits_uintmax_p (x, MPFR_RNDN)) 527  ERROR1; 528  if (mpfr_fits_intmax_p (x, MPFR_RNDN)) 529  ERROR1; 596 530 + /* Check INF */ 597 531 + mpfr_set_inf (x, 1); … … 600 534 + if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) 601 535 + ERROR1 (55); 602 + 536 537  /* Check Zero */ 538  MPFR_SET_ZERO (x); 539  if (!mpfr_fits_uintmax_p (x, MPFR_RNDN)) 540  ERROR2; 541  if (!mpfr_fits_intmax_p (x, MPFR_RNDN)) 542  ERROR2; 603 543 + /* Check Zero */ 604 544 + MPFR_SET_ZERO (x); … … 607 547 + if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) 608 548 + ERROR1 (57); 609 + 549 550  /* Check small op */ 551  mpfr_set_str1 (x, "1@1"); 552  if (!mpfr_fits_uintmax_p (x, MPFR_RNDN)) 553  ERROR2; 554  if (!mpfr_fits_intmax_p (x, MPFR_RNDN)) 555  ERROR2; 610 556 + /* Check positive small op */ 611 557 + mpfr_set_str1 (x, "1@1"); … … 614 560 + if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) 615 561 + ERROR1 (59); 616 + 562 563  /* Check 17 */ 564  mpfr_set_ui (x, 17, MPFR_RNDN); 565  if (!mpfr_fits_uintmax_p (x, MPFR_RNDN)) 566  ERROR2; 567  if (!mpfr_fits_intmax_p (x, MPFR_RNDN)) 568  ERROR2; 617 569 + /* Check 17 */ 618 570 + mpfr_set_ui (x, 17, MPFR_RNDN); … … 621 573 + if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) 622 574 + ERROR1 (61); 623 + 575 576  /* Check hugest */ 577  mpfr_set_ui_2exp (x, 42, sizeof (uintmax_t) * 32, MPFR_RNDN); 578  if (mpfr_fits_uintmax_p (x, MPFR_RNDN)) 579  ERROR1; 580  if (mpfr_fits_intmax_p (x, MPFR_RNDN)) 581  ERROR1; 624 582 + /* Check hugest */ 625 583 + mpfr_set_ui_2exp (x, 42, sizeof (uintmax_t) * 32, MPFR_RNDN); … … 628 586 + if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) 629 587 + ERROR1 (63); 630 + 588 589  /* Check all other values */ 590  mpfr_set_uj (x, MPFR_UINTMAX_MAX, MPFR_RNDN); 591  mpfr_add_ui (x, x, 1, MPFR_RNDN); 592  if (mpfr_fits_uintmax_p (x, MPFR_RNDN)) 593  ERROR1; 594  mpfr_set_uj (x, MPFR_UINTMAX_MAX, MPFR_RNDN); 595  if (!mpfr_fits_uintmax_p (x, MPFR_RNDN)) 596  ERROR2; 597  mpfr_set_sj (x, MPFR_INTMAX_MAX, MPFR_RNDN); 598  mpfr_add_ui (x, x, 1, MPFR_RNDN); 599  if (mpfr_fits_intmax_p (x, MPFR_RNDN)) 600  ERROR1; 601  mpfr_set_sj (x, MPFR_INTMAX_MAX, MPFR_RNDN); 602  if (!mpfr_fits_intmax_p (x, MPFR_RNDN)) 603  ERROR2; 604  mpfr_set_sj (x, MPFR_INTMAX_MIN, MPFR_RNDN); 605  if (!mpfr_fits_intmax_p (x, MPFR_RNDN)) 606  ERROR2; 607  mpfr_sub_ui (x, x, 1, MPFR_RNDN); 608  if (mpfr_fits_intmax_p (x, MPFR_RNDN)) 609  ERROR1; 631 610 + /* Check all other values */ 632 611 + mpfr_set_uj (x, MPFR_UINTMAX_MAX, MPFR_RNDN); … … 650 629 + if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r)) 651 630 + ERROR1 (69); 652 + 631 632  /* Check negative value */ 633  mpfr_set_si (x, 1, MPFR_RNDN); 634  if (!mpfr_fits_intmax_p (x, MPFR_RNDN)) 635  ERROR2; 636  if (mpfr_fits_uintmax_p (x, MPFR_RNDN)) 637  ERROR1; 653 638 + /* Check negative op */ 654 639 + for (i = 1; i <= 4; i++) … … 671 656 } 672 657  673 diff Naur mpfr3.1.2.orig/tests/tget_flt.c mpfr3.1.2/tests/tget_flt.c 674  mpfr3.1.2.orig/tests/tget_flt.c 20130313 15:37:44.000000000 +0000 675 +++ mpfr3.1.2/tests/tget_flt.c 20131111 23:55:16.818732551 +0000 658 diff Naurd mpfr3.1.2a/PATCHES mpfr3.1.2b/PATCHES 659  mpfr3.1.2a/PATCHES 20131009 13:34:21.000000000 +0000 660 +++ mpfr3.1.2b/PATCHES 20131009 13:34:21.000000000 +0000 661 @@ 0,0 +1 @@ 662 +clangdivby0 663 diff Naurd mpfr3.1.2a/VERSION mpfr3.1.2b/VERSION 664  mpfr3.1.2a/VERSION 20130926 10:52:52.000000000 +0000 665 +++ mpfr3.1.2b/VERSION 20131009 13:34:21.000000000 +0000 666 @@ 1 +1 @@ 667 3.1.2p2 668 +3.1.2p3 669 diff Naurd mpfr3.1.2a/src/mpfrimpl.h mpfr3.1.2b/src/mpfrimpl.h 670  mpfr3.1.2a/src/mpfrimpl.h 20130313 15:37:36.000000000 +0000 671 +++ mpfr3.1.2b/src/mpfrimpl.h 20131009 13:34:21.000000000 +0000 672 @@ 468,8 +468,16 @@ 673 #define MPFR_LIMBS_PER_FLT ((IEEE_FLT_MANT_DIG1)/GMP_NUMB_BITS+1) 674 675 /* Visual C++ doesn't support +1.0/0.0, 1.0/0.0 and 0.0/0.0 676  at compile time. */ 677 #if defined(_MSC_VER) && defined(_WIN32) && (_MSC_VER >= 1200) 678 + at compile time. 679 + Clang with fsanitize=undefined is a bit similar due to a bug: 680 + http://llvm.org/bugs/show_bug.cgi?id=17381 681 + but even without its sanitizer, it may be better to use the 682 + double_zero version until IEEE 754 division by zero is properly 683 + supported: 684 + http://llvm.org/bugs/show_bug.cgi?id=17000 685 +*/ 686 +#if (defined(_MSC_VER) && defined(_WIN32) && (_MSC_VER >= 1200))  \ 687 + defined(__clang__) 688 static double double_zero = 0.0; 689 # define DBL_NAN (double_zero/double_zero) 690 # define DBL_POS_INF ((double) 1.0/double_zero) 691 @@ 501,6 +509,8 @@ 692 (with Xcode 2.4.1, i.e. the latest one). */ 693 #define LVALUE(x) (&(x) == &(x)  &(x) != &(x)) 694 #define DOUBLE_ISINF(x) (LVALUE(x) && ((x) > DBL_MAX  (x) < DBL_MAX)) 695 +/* The DOUBLE_ISNAN(x) macro is also valid on long double x 696 + (assuming that the compiler isn't too broken). */ 697 #ifdef MPFR_NANISNAN 698 /* Avoid MIPSpro / IRIX64 / gcc ffastmath (incorrect) optimizations. 699 The + must not be replaced by a . With gcc ffastmath, NaN is 700 diff Naurd mpfr3.1.2a/src/mpfr.h mpfr3.1.2b/src/mpfr.h 701  mpfr3.1.2a/src/mpfr.h 20130926 10:52:52.000000000 +0000 702 +++ mpfr3.1.2b/src/mpfr.h 20131009 13:34:21.000000000 +0000 703 @@ 27,7 +27,7 @@ 704 #define MPFR_VERSION_MAJOR 3 705 #define MPFR_VERSION_MINOR 1 706 #define MPFR_VERSION_PATCHLEVEL 2 707 #define MPFR_VERSION_STRING "3.1.2p2" 708 +#define MPFR_VERSION_STRING "3.1.2p3" 709 710 /* Macros dealing with MPFR VERSION */ 711 #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L)  ((b) << 8)  (c)) 712 diff Naurd mpfr3.1.2a/src/version.c mpfr3.1.2b/src/version.c 713  mpfr3.1.2a/src/version.c 20130926 10:52:52.000000000 +0000 714 +++ mpfr3.1.2b/src/version.c 20131009 13:34:21.000000000 +0000 715 @@ 25,5 +25,5 @@ 716 const char * 717 mpfr_get_version (void) 718 { 719  return "3.1.2p2"; 720 + return "3.1.2p3"; 721 } 722 diff Naurd mpfr3.1.2a/tests/tget_flt.c mpfr3.1.2b/tests/tget_flt.c 723  mpfr3.1.2a/tests/tget_flt.c 20130313 15:37:44.000000000 +0000 724 +++ mpfr3.1.2b/tests/tget_flt.c 20131009 13:34:21.000000000 +0000 676 725 @@ 28,9 +28,17 @@ 677 726 main (void) … … 684 733 + float infp; 685 734 +#endif 686 735 + 687 736 + tests_start_mpfr (); 688 + 737 689 738 +#if !defined(MPFR_ERRDIVZERO) 690 739 + /* The definition of DBL_POS_INF involves a division by 0. This makes … … 719 768 mpfr_clear (x); 720 769 mpfr_clear (y); 721 diff Naur mpfr3.1.2.orig/tests/tset_ld.c mpfr3.1.2/tests/tset_ld.c722  mpfr3.1.2 .orig/tests/tset_ld.c 20130313 15:37:44.000000000 +0000723 +++ mpfr3.1.2 /tests/tset_ld.c 20131111 23:55:16.818732551+0000770 diff Naurd mpfr3.1.2a/tests/tset_ld.c mpfr3.1.2b/tests/tset_ld.c 771  mpfr3.1.2a/tests/tset_ld.c 20130313 15:37:44.000000000 +0000 772 +++ mpfr3.1.2b/tests/tset_ld.c 20131009 13:34:21.000000000 +0000 724 773 @@ 47,8 +47,11 @@ 725 774 static int … … 736 785 LONGDOUBLE_NAN_ACTION (d, goto yes); 737 786 return 0; 787 diff Naurd mpfr3.1.2a/PATCHES mpfr3.1.2b/PATCHES 788  mpfr3.1.2a/PATCHES 20131115 00:51:49.211333830 +0000 789 +++ mpfr3.1.2b/PATCHES 20131115 00:51:49.323334999 +0000 790 @@ 0,0 +1 @@ 791 +printfalt0 792 diff Naurd mpfr3.1.2a/VERSION mpfr3.1.2b/VERSION 793  mpfr3.1.2a/VERSION 20131115 00:51:49.211333830 +0000 794 +++ mpfr3.1.2b/VERSION 20131115 00:51:49.323334999 +0000 795 @@ 1 +1 @@ 796 3.1.2p3 797 +3.1.2p4 798 diff Naurd mpfr3.1.2a/src/mpfr.h mpfr3.1.2b/src/mpfr.h 799  mpfr3.1.2a/src/mpfr.h 20131115 00:51:49.211333830 +0000 800 +++ mpfr3.1.2b/src/mpfr.h 20131115 00:51:49.323334999 +0000 801 @@ 27,7 +27,7 @@ 802 #define MPFR_VERSION_MAJOR 3 803 #define MPFR_VERSION_MINOR 1 804 #define MPFR_VERSION_PATCHLEVEL 2 805 #define MPFR_VERSION_STRING "3.1.2p3" 806 +#define MPFR_VERSION_STRING "3.1.2p4" 807 808 /* Macros dealing with MPFR VERSION */ 809 #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L)  ((b) << 8)  (c)) 810 diff Naurd mpfr3.1.2a/src/vasprintf.c mpfr3.1.2b/src/vasprintf.c 811  mpfr3.1.2a/src/vasprintf.c 20130313 15:37:37.000000000 +0000 812 +++ mpfr3.1.2b/src/vasprintf.c 20131115 00:51:49.267334408 +0000 813 @@ 1040,7 +1040,7 @@ 814 } 815 816 /* Determine the different parts of the string representation of the regular 817  number P when SPEC.SPEC is 'e', 'E', 'g', or 'G'. 818 + number P when spec.spec is 'e', 'E', 'g', or 'G'. 819 DEC_INFO contains the previously computed exponent and string or is NULL. 820 821 return 1 if some field > INT_MAX */ 822 @@ 1167,7 +1167,7 @@ 823 } 824 825 /* Determine the different parts of the string representation of the regular 826  number P when SPEC.SPEC is 'f', 'F', 'g', or 'G'. 827 + number P when spec.spec is 'f', 'F', 'g', or 'G'. 828 DEC_INFO contains the previously computed exponent and string or is NULL. 829 830 return 1 if some field of number_parts is greater than INT_MAX */ 831 @@ 1559,7 +1559,7 @@ 832 /* fractional part */ 833 { 834 np>point = MPFR_DECIMAL_POINT; 835  np>fp_trailing_zeros = (spec.spec == 'g' && spec.spec == 'G') ? 836 + np>fp_trailing_zeros = (spec.spec == 'g'  spec.spec == 'G') ? 837 spec.prec  1 : spec.prec; 838 } 839 else if (spec.alt) 840 diff Naurd mpfr3.1.2a/src/version.c mpfr3.1.2b/src/version.c 841  mpfr3.1.2a/src/version.c 20131115 00:51:49.211333830 +0000 842 +++ mpfr3.1.2b/src/version.c 20131115 00:51:49.323334999 +0000 843 @@ 25,5 +25,5 @@ 844 const char * 845 mpfr_get_version (void) 846 { 847  return "3.1.2p3"; 848 + return "3.1.2p4"; 849 } 850 diff Naurd mpfr3.1.2a/tests/tsprintf.c mpfr3.1.2b/tests/tsprintf.c 851  mpfr3.1.2a/tests/tsprintf.c 20130313 15:37:44.000000000 +0000 852 +++ mpfr3.1.2b/tests/tsprintf.c 20131115 00:51:49.267334408 +0000 853 @@ 456,10 +456,16 @@ 854 check_sprintf ("1.999900 ", "%#10.7RG", x); 855 check_sprintf ("1.9999 ", "%10.7RG", x); 856 mpfr_set_ui (x, 1, MPFR_RNDN); 857 + check_sprintf ("1.", "%#.1Rg", x); 858 + check_sprintf ("1. ", "%#5.1Rg", x); 859 + check_sprintf (" 1.0", "%#5.2Rg", x); 860 check_sprintf ("1.00000000000000000000000000000", "%#.30Rg", x); 861 check_sprintf ("1", "%.30Rg", x); 862 mpfr_set_ui (x, 0, MPFR_RNDN); 863  check_sprintf ("0.000000000000000000000000000000", "%#.30Rg", x); 864 + check_sprintf ("0.", "%#.1Rg", x); 865 + check_sprintf ("0. ", "%#5.1Rg", x); 866 + check_sprintf (" 0.0", "%#5.2Rg", x); 867 + check_sprintf ("0.00000000000000000000000000000", "%#.30Rg", x); 868 check_sprintf ("0", "%.30Rg", x); 869 870 /* following tests with precision 53 bits */ 871 diff Naurd mpfr3.1.2a/PATCHES mpfr3.1.2b/PATCHES 872  mpfr3.1.2a/PATCHES 20131201 11:07:49.575329762 +0000 873 +++ mpfr3.1.2b/PATCHES 20131201 11:07:49.751331625 +0000 874 @@ 0,0 +1 @@ 875 +custom_init_set 876 diff Naurd mpfr3.1.2a/VERSION mpfr3.1.2b/VERSION 877  mpfr3.1.2a/VERSION 20131201 11:07:49.571329714 +0000 878 +++ mpfr3.1.2b/VERSION 20131201 11:07:49.747331585 +0000 879 @@ 1 +1 @@ 880 3.1.2p4 881 +3.1.2p5 882 diff Naurd mpfr3.1.2a/src/mpfr.h mpfr3.1.2b/src/mpfr.h 883  mpfr3.1.2a/src/mpfr.h 20131201 11:07:49.571329714 +0000 884 +++ mpfr3.1.2b/src/mpfr.h 20131201 11:07:49.747331585 +0000 885 @@ 27,7 +27,7 @@ 886 #define MPFR_VERSION_MAJOR 3 887 #define MPFR_VERSION_MINOR 1 888 #define MPFR_VERSION_PATCHLEVEL 2 889 #define MPFR_VERSION_STRING "3.1.2p4" 890 +#define MPFR_VERSION_STRING "3.1.2p5" 891 892 /* Macros dealing with MPFR VERSION */ 893 #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L)  ((b) << 8)  (c)) 894 @@ 861,7 +861,7 @@ 895 _t = (mpfr_kind_t) _k; \ 896 _s = 1; \ 897 } else { \ 898  _t = (mpfr_kind_t) k; \ 899 + _t = (mpfr_kind_t)  _k; \ 900 _s = 1; \ 901 } \ 902 _e = _t == MPFR_REGULAR_KIND ? (e) : \ 903 diff Naurd mpfr3.1.2a/src/version.c mpfr3.1.2b/src/version.c 904  mpfr3.1.2a/src/version.c 20131201 11:07:49.575329762 +0000 905 +++ mpfr3.1.2b/src/version.c 20131201 11:07:49.747331585 +0000 906 @@ 25,5 +25,5 @@ 907 const char * 908 mpfr_get_version (void) 909 { 910  return "3.1.2p4"; 911 + return "3.1.2p5"; 912 }
Note:
See TracChangeset
for help on using the changeset viewer.