1717#include " dragonbox/dragonbox_to_chars.h"
1818#include " ryu/ryu.h"
1919#include " double-conversion/double-conversion.h"
20+ #include " grisu_exact.h"
2021
2122#define IEEE_8087
2223#include " benchutil.h"
@@ -58,6 +59,7 @@ void process(std::vector<double> &lines) {
5859 }
5960 return volume;
6061 });
62+
6163 pretty_print (lines, " fmt::format" , [](const std::vector<double > &lines) {
6264 double volume = 0 ;
6365 for (const auto d : lines) {
@@ -66,6 +68,7 @@ void process(std::vector<double> &lines) {
6668 }
6769 return volume;
6870 });
71+
6972#if NETLIB_SUPPORTED
7073 pretty_print (lines, " netlib" , [](const std::vector<double > &lines) {
7174 double volume = 0 ;
@@ -87,6 +90,7 @@ void process(std::vector<double> &lines) {
8790#else
8891 std::cout << " # netlib not supported" << std::endl;
8992#endif
93+
9094 pretty_print (lines, " sprintf" , [](const std::vector<double > &lines) {
9195 double volume = 0 ;
9296 char buffer[100 ];
@@ -95,6 +99,7 @@ void process(std::vector<double> &lines) {
9599 }
96100 return volume;
97101 });
102+
98103 pretty_print (lines, " grisu2" , [](const std::vector<double > &lines) {
99104 double volume = 0 ;
100105 char buffer[100 ];
@@ -104,6 +109,17 @@ void process(std::vector<double> &lines) {
104109 }
105110 return volume;
106111 });
112+
113+ pretty_print (lines, " grisu_exact" , [](const std::vector<double > &lines) {
114+ double volume = 0 ;
115+ char buffer[100 ];
116+ for (const auto d : lines) {
117+ auto v = jkj::grisu_exact (d);
118+ volume += to_chars (v.significand , v.exponent , v.is_negative , buffer);
119+ }
120+ return volume;
121+ });
122+
107123#if FROM_CHARS_DOUBLE_SUPPORTED
108124 pretty_print (lines, " std::to_chars" , [](const std::vector<double > &lines) {
109125 double volume = 0 ;
@@ -121,6 +137,7 @@ void process(std::vector<double> &lines) {
121137#else
122138 std::cout << " # std::to_chars not supported" << std::endl;
123139#endif
140+
124141 pretty_print (lines, " dragonbox" , [](const std::vector<double > &lines) {
125142 double volume = 0 ;
126143 char buffer[100 ];
0 commit comments