diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -3,6 +3,10 @@
 
 * Latest Hackage released version: 3.10, 2024-03-01
 
+### Version 3.12, 2024-04-05
+
+  * Fix hexadecimal float parsing for e4m3
+
 ### Version 3.11, 2024-04-05
 
   * Allow for encoding of hexadecimal floats
diff --git a/crackNum.cabal b/crackNum.cabal
--- a/crackNum.cabal
+++ b/crackNum.cabal
@@ -1,6 +1,6 @@
 Cabal-version      : 2.2
 Name               : crackNum
-Version            : 3.11
+Version            : 3.12
 Synopsis           : Crack various integer and floating-point data formats
 Description        : Crack IEEE-754 float formats and arbitrary sized words and integers, showing the layout.
                      .
diff --git a/src/CrackNum/Main.hs b/src/CrackNum/Main.hs
--- a/src/CrackNum/Main.hs
+++ b/src/CrackNum/Main.hs
@@ -691,7 +691,10 @@
 encodeE4M3 :: Bool -> RM -> String -> IO ()
 encodeE4M3 debug rm inp = case reads (fixup True inp) of
                             [(v :: Double, "")] -> analyze v
-                            _                   -> unrecognized inp
+                            _                   -> -- maybe it's a hexfloat?
+                                                   do let hr = readHexRational inp
+                                                      (rnf hr `seq` analyze (fromRational hr))
+                                                        `C.catch` (\(_ :: C.SomeException) -> unrecognized inp)
  where config = z3{ crackNum = True
                   , verbose  = debug
                   }
