mirror of
https://github.com/rspamd/rspamd.git
synced 2024-07-31 20:21:26 +02:00
36 lines
851 B
C
36 lines
851 B
C
#ifndef FPCONV_H
|
|
#define FPCONV_H
|
|
|
|
#define FPCONV_BUFLEN 32
|
|
/* 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[FPCONV_BUFLEN], unsigned precision,
|
|
bool scientific);
|
|
|
|
#endif
|
|
|
|
/* [1] http://florian.loitsch.com/publications/dtoa-pldi2010.pdf */
|