From 4f9f85c6d1b7ca4bfab4599cb76e885c71ad07f6 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Sat, 6 Apr 2019 12:24:22 +0100 Subject: [Feature] Import fpconv library Source: https://github.com/night-shift/fpconv --- contrib/fpconv/fpconv.h | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 contrib/fpconv/fpconv.h (limited to 'contrib/fpconv/fpconv.h') diff --git a/contrib/fpconv/fpconv.h b/contrib/fpconv/fpconv.h new file mode 100644 index 000000000..58bbcccbb --- /dev/null +++ b/contrib/fpconv/fpconv.h @@ -0,0 +1,33 @@ +#ifndef FPCONV_H +#define FPCONV_H + +/* Fast and accurate double to string conversion based on Florian Loitsch's + * Grisu-algorithm[1]. + * + * Input: + * fp -> the double to convert, dest -> destination buffer. + * The generated string will never be longer than 24 characters. + * Make sure to pass a pointer to at least 24 bytes of memory. + * The emitted string will not be null terminated. + * + * Output: + * The number of written characters. + * + * Exemplary usage: + * + * void print(double d) + * { + * char buf[24 + 1] // plus null terminator + * int str_len = fpconv_dtoa(d, buf); + * + * buf[str_len] = '\0'; + * printf("%s", buf); + * } + * + */ + +int fpconv_dtoa(double fp, char dest[24]); + +#endif + +/* [1] http://florian.loitsch.com/publications/dtoa-pldi2010.pdf */ -- cgit v1.2.3