authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-01-28 12:54:30-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-01-28 12:54:30-07:00
log2fc4b3629a0fdcca04b5c107a70f0e159bca3e49
treea1a9979f87e9c84fda57708253bbecd05a56bd39
parent347866f3a70078736f8b4fb36ff458b37231889a

std: remove incorrect float printing code


1 files changed, 0 insertions(+), 75 deletions(-)

std/std.zig-75
...@@ -108,20 +108,6 @@ pub struct OutStream {...@@ -108,20 +108,6 @@ pub struct OutStream {
108 return amt_printed;108 return amt_printed;
109 }109 }
110110
111 pub fn print_f64(os: &OutStream, x: f64) -> %isize {
112 if (os.index + max_f64_digits >= os.buffer.len) {
113 %return os.flush();
114 }
115 const amt_printed = buf_print_f64(os.buffer[os.index...], x);
116 os.index += amt_printed;
117
118 if (!os.buffered) {
119 %return os.flush();
120 }
121
122 return amt_printed;
123 }
124
125 pub fn flush(os: &OutStream) -> %void {111 pub fn flush(os: &OutStream) -> %void {
126 const amt_written = write(os.fd, os.buffer.ptr, os.index);112 const amt_written = write(os.fd, os.buffer.ptr, os.index);
127 os.index = 0;113 os.index = 0;
...@@ -243,67 +229,6 @@ pub fn buf_print_u64(out_buf: []u8, x: u64) -> isize {...@@ -243,67 +229,6 @@ pub fn buf_print_u64(out_buf: []u8, x: u64) -> isize {
243 return len;229 return len;
244}230}
245231
246pub fn buf_print_f64(out_buf: []u8, x: f64) -> isize {
247 if (x == f64_get_pos_inf()) {
248 const buf2 = "+Inf";
249 @memcpy(&out_buf[0], &buf2[0], buf2.len);
250 return 4;
251 } else if (x == f64_get_neg_inf()) {
252 const buf2 = "-Inf";
253 @memcpy(&out_buf[0], &buf2[0], buf2.len);
254 return 4;
255 } else if (f64_is_nan(x)) {
256 const buf2 = "NaN";
257 @memcpy(&out_buf[0], &buf2[0], buf2.len);
258 return 3;
259 }
260
261 var buf: [max_f64_digits]u8 = undefined;
262
263 var len: isize = 0;
264
265 // 1 sign bit
266 // 11 exponent bits
267 // 52 significand bits (+ 1 implicit always non-zero bit)
268
269 const bits = f64_to_bits(x);
270 if (bits & (1 << 63) != 0) {
271 buf[0] = '-';
272 len += 1;
273 }
274
275 const rexponent: i64 = i64((bits >> 52) & ((1 << 11) - 1));
276 const exponent = rexponent - 1023 - 52;
277 /*%%stdout.printf("exponent: ");
278 %%stdout.print_i64(exponent);
279 %%stdout.printf("\n");*/
280
281 if (rexponent == 0) {
282 buf[len] = '0';
283 len += 1;
284 @memcpy(&out_buf[0], &buf[0], len);
285 return len;
286 }
287
288 const sig = (bits & ((1 << 52) - 1)) | (1 << 52);
289 /*%%stdout.printf("significand: ");
290 %%stdout.print_u64(sig);
291 %%stdout.printf("\n");*/
292
293 len += buf_print_u64(buf[len...], sig);
294 buf[len] = '*';
295 len += 1;
296 buf[len] = '2';
297 len += 1;
298 buf[len] = '^';
299 len += 1;
300 len += buf_print_i64(buf[len...], exponent);
301
302 @memcpy(&out_buf[0], &buf[0], len);
303
304 len
305}
306
307fn min_isize(x: isize, y: isize) -> isize {232fn min_isize(x: isize, y: isize) -> isize {
308 if (x < y) x else y233 if (x < y) x else y
309}234}