+ return x;
+}
+
+/* An attempt at a useful 1-bit hash function. Has not been analyzed for
+ * quality. */
+static inline uint32_t hash_boolean(bool x, uint32_t basis)
+{
+ enum { P0 = 0xc2b73583 }; /* This is hash_int(1, 0). */
+ enum { P1 = 0xe90f1258 }; /* This is hash_int(2, 0). */
+ return (x ? P0 : P1) ^ HASH_ROT(basis, 1);
+}
+
+static inline uint32_t hash_double(double x, uint32_t basis)
+{
+ uint32_t value[2];
+ BUILD_ASSERT_DECL(sizeof x == sizeof value);
+
+ memcpy(value, &x, sizeof value);
+ return hash_3words(value[0], value[1], basis);