summaryrefslogtreecommitdiff
path: root/libc/misc/internals
diff options
context:
space:
mode:
authorManuel Novoa III <mjn3@codepoet.org>2001-01-30 16:00:13 +0000
committerManuel Novoa III <mjn3@codepoet.org>2001-01-30 16:00:13 +0000
commitec2e4b41b98fdc9083405be56b8bfa91d892438e (patch)
treebfb8b5bf24fc8ded3433da5942a39ae849eacafa /libc/misc/internals
parent35ec5000a5d5319a3f64931561e20ba20ebe7f65 (diff)
Added some notes. Removed some dead code.
Diffstat (limited to 'libc/misc/internals')
-rw-r--r--libc/misc/internals/dtostr.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/libc/misc/internals/dtostr.c b/libc/misc/internals/dtostr.c
index 9fe7b2624..498887fb3 100644
--- a/libc/misc/internals/dtostr.c
+++ b/libc/misc/internals/dtostr.c
@@ -9,6 +9,11 @@
*
* Notes:
*
+ * At most MAX_DIGITS significant digits are kept. Any trailing digits
+ * are treated as 0 as they are really just the results of rounding noise
+ * anyway. If you want to do better, use an arbitary precision arithmetic
+ * package. ;-)
+ *
* It should also be fairly portable, as not assumptions are made about the
* bit-layout of doubles.
*
@@ -154,7 +159,6 @@ int __dtostr(FILE * fp, size_t size, double x,
char *s;
char *e;
char buf[BUF_SIZE];
- char buf2[BUF_SIZE];
INT_OR_PTR pc_fwi[2*MAX_CALLS];
INT_OR_PTR *ppc;
char exp_buf[8];
@@ -232,7 +236,7 @@ int __dtostr(FILE * fp, size_t size, double x,
assert(x < 1e9);
GENERATE_DIGITS:
- s = buf2 + 2; /* leave space for '\0' and '0' */
+ s = buf + 2; /* leave space for '\0' and '0' */
for (i = 0 ; i < NUM_DIGIT_BLOCKS ; ++i ) {
digit_block = (DIGIT_BLOCK_TYPE) x;
@@ -260,9 +264,6 @@ int __dtostr(FILE * fp, size_t size, double x,
round += exp;
}
- RESTART:
- memcpy(buf,buf2,sizeof(buf2)); /* backup in case g need to be f */
-
s = buf;
*s++ = 0; /* terminator for rounding and 0-triming */
*s = '0'; /* space to round */
@@ -291,7 +292,6 @@ int __dtostr(FILE * fp, size_t size, double x,
if ((mode == 'g') && ((o_exp >= -4) && (o_exp < round))) {
mode = 'f';
- goto RESTART;
}
exp = o_exp;