DoubleToAscii's input must not be special.
In SHORTEST_SINGLE this restriction also applies to static_cast<float>(v).
diff --git a/src/double-conversion.h b/src/double-conversion.h
index 916991b..f98edae 100644
--- a/src/double-conversion.h
+++ b/src/double-conversion.h
@@ -295,7 +295,10 @@
static const int kBase10MaximalLength = 17;
// Converts the given double 'v' to ascii. 'v' must not be NaN, +Infinity, or
- // -Infinity.
+ // -Infinity. In SHORTEST_SINGLE-mode this restriction also applies to 'v'
+ // after it has been casted to a single-precision float. That is, in this
+ // mode static_cast<float>(v) must not be NaN, +Infinity or -Infinity.
+ //
// The result should be interpreted as buffer * 10^(point-length).
//
// The output depends on the given mode:
@@ -306,6 +309,7 @@
// 'v'. If there are two at the same distance, than the one farther away
// from 0 is chosen (halfway cases - ending with 5 - are rounded up).
// In this mode the 'requested_digits' parameter is ignored.
+ // - SHORTEST_SINGLE: same as SHORTEST but with single-precision.
// - FIXED: produces digits necessary to print a given number with
// 'requested_digits' digits after the decimal point. The produced digits
// might be too short in which case the caller has to fill the remainder