diff --git a/script/manual-test-parse-number-f64.cc b/script/manual-test-parse-number-f64.cc
index 1fd5d37..efe7c6d 100644
--- a/script/manual-test-parse-number-f64.cc
+++ b/script/manual-test-parse-number-f64.cc
@@ -52,13 +52,20 @@
 // program to generate a stand-alone C++ file.
 #include "../release/c/wuffs-unsupported-snapshot.c"
 
-// Uncomment this to use the github.com/lemire/fast_double_parser library. This
-// header-only library is C++, not C.
+// Uncomment one or all of these to use the
+//  - github.com/lemire/fast_double_parser
+//  - github.com/lemire/fast_float
+// libraries. These header-only libraries are C++, not C.
+//
 // #define USE_LEMIRE_FAST_DOUBLE_PARSER
+// #define USE_LEMIRE_FAST_FLOAT
 
 #ifdef USE_LEMIRE_FAST_DOUBLE_PARSER
 #include "/the/path/to/fast_double_parser/include/fast_double_parser.h"
 #endif
+#ifdef USE_LEMIRE_FAST_FLOAT
+#include "/the/path/to/fast_float/include/fast_float/fast_float.h"
+#endif
 
 const uint8_t hex[256] = {
     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,  // 0x00-0x07
@@ -140,8 +147,10 @@
   fprintf(stderr, "main: %s mismatch at %s:%" PRIu64 "\n", impl, g_filename,
           g_line);
   fprintf(stderr, "src:  %s\n", z);
-  fprintf(stderr, "have: %016" PRIX64 "\n", have);
-  fprintf(stderr, "want: %016" PRIX64 "\n", want);
+  fprintf(stderr, "have: 0x%016" PRIX64 " %f\n", have,
+          wuffs_base__ieee_754_bit_representation__from_u64_to_f64(have));
+  fprintf(stderr, "want: 0x%016" PRIX64 " %f\n", want,
+          wuffs_base__ieee_754_bit_representation__from_u64_to_f64(want));
 }
 
 bool  //
@@ -193,13 +202,34 @@
     double have_f64;
     if (!fast_double_parser::decimal_separator_dot::parse_number(&z[0],
                                                                  &have_f64)) {
-      fail_parse("lemire", z);
+      fail_parse("lemire/fast_double_parser", &z[0]);
       return false;
     }
     uint64_t have =
         wuffs_base__ieee_754_bit_representation__from_f64_to_u64(have_f64);
     if (have != want) {
-      fail("lemire", &z[0], have, want);
+      fail("lemire/fast_double_parser", &z[0], have, want);
+      return false;
+    }
+  }
+#endif
+
+#ifdef USE_LEMIRE_FAST_FLOAT
+  // Check lemire/fast_float's from_chars.
+  {
+    double have_f64;
+    fast_float::from_chars_result result = fast_float::from_chars(
+        static_cast<char*>(static_cast<void*>(s.ptr)),
+        static_cast<char*>(static_cast<void*>(s.ptr + s.len)), have_f64,
+        fast_float::chars_format::general);
+    if (result.ec != std::errc()) {
+      fail_parse("lemire/fast_float", &z[0]);
+      return false;
+    }
+    uint64_t have =
+        wuffs_base__ieee_754_bit_representation__from_f64_to_u64(have_f64);
+    if (have != want) {
+      fail("lemire/fast_float", &z[0], have, want);
       return false;
     }
   }
@@ -210,7 +240,7 @@
     wuffs_base__result_f64 res = wuffs_base__parse_number_f64(
         s, WUFFS_BASE__PARSE_NUMBER_XXX__DEFAULT_OPTIONS);
     if (res.status.repr) {
-      fail_parse("wuffs", z);
+      fail_parse("wuffs", &z[0]);
       return false;
     }
     uint64_t have =
