blob: 42622370b06739be20097a01dccd93f53cf21eca [file] [log] [blame]
Index: dtoa.cc
--- dtoa.cc (old copy)
+++ dtoa.cc (working copy)
@@ -179,6 +179,9 @@
* used for input more than STRTOD_DIGLIM digits long (default 40).
*/
+#define IEEE_8087
+#define NO_HEX_FP
+
#ifndef Long
#define Long long
#endif
@@ -280,9 +283,7 @@
#include "math.h"
#endif
-#ifdef __cplusplus
-extern "C" {
-#endif
+namespace dmg_fp {
#ifndef CONST
#ifdef KR_headers
@@ -511,11 +512,9 @@
#define Kmax 7
-#ifdef __cplusplus
-extern "C" double strtod(const char *s00, char **se);
-extern "C" char *dtoa(double d, int mode, int ndigits,
+double strtod(const char *s00, char **se);
+char *dtoa(double d, int mode, int ndigits,
int *decpt, int *sign, char **rve);
-#endif
struct
Bigint {
@@ -1527,7 +1526,7 @@
#ifdef KR_headers
(sp, t) char **sp, *t;
#else
- (CONST char **sp, char *t)
+ (CONST char **sp, CONST char *t)
#endif
{
int c, d;
@@ -2234,7 +2234,7 @@ bigcomp
nd = bc->nd;
nd0 = bc->nd0;
p5 = nd + bc->e0 - 1;
- speccase = 0;
+ dd = speccase = 0;
#ifndef Sudden_Underflow
if (rv->d == 0.) { /* special case: value near underflow-to-zero */
/* threshold was rounded to zero */
@@ -3431,7 +3430,7 @@
j = sizeof(ULong);
for(k = 0;
- sizeof(Bigint) - sizeof(ULong) - sizeof(int) + j <= i;
+ sizeof(Bigint) - sizeof(ULong) - sizeof(int) + j <= (size_t)i;
j <<= 1)
k++;
r = (int*)Balloc(k);
@@ -3447,7 +3446,7 @@
#ifdef KR_headers
nrv_alloc(s, rve, n) char *s, **rve; int n;
#else
-nrv_alloc(char *s, char **rve, int n)
+nrv_alloc(CONST char *s, char **rve, int n)
#endif
{
char *rv, *t;
@@ -4202,6 +4201,5 @@
*rve = s;
return s0;
}
-#ifdef __cplusplus
-}
-#endif
+
+} // namespace dmg_fp
Index: g_fmt.cc
--- g_fmt.cc (old copy)
+++ g_fmt.cc (new copy)
@@ -46,14 +46,14 @@ g_fmt(register char *b, double x)
if (sign)
*b++ = '-';
if (decpt == 9999) /* Infinity or Nan */ {
- while(*b++ = *s++);
+ while((*b++ = *s++));
goto done0;
}
if (decpt <= -4 || decpt > se - s + 5) {
*b++ = *s++;
if (*s) {
*b++ = '.';
- while(*b = *s++)
+ while((*b = *s++))
b++;
}
*b++ = 'e';
@@ -79,10 +79,10 @@ g_fmt(register char *b, double x)
*b++ = '.';
for(; decpt < 0; decpt++)
*b++ = '0';
- while(*b++ = *s++);
+ while((*b++ = *s++));
}
else {
- while(*b = *s++) {
+ while((*b = *s++)) {
b++;
if (--decpt == 0 && *s)
*b++ = '.';
@@ -93,7 +93,9 @@ g_fmt(register char *b, double x)
}
done0:
freedtoa(s0);
+#ifdef IGNORE_ZERO_SIGN
done:
+#endif
return b0;
}