FLT.MIN Function (Gnumeric)
Understand Gnumeric FLT.MIN as the smallest positive normal value, with binary64 examples, subnormal comparisons and scaling diagnostics.
Verification status: See the evidence and test scope described in this guide. How formula examples are checked
Quick answer: =FLT.MIN() returns the smallest positive normal floating-point value for the build. In IEEE binary64, the reference value is 2^-1022, approximately 2.2250738585072014E-308.
Availability and evidence scope
- Introduced: Gnumeric 1.12.57. Its release notes name all four FLT functions as new testing aids. No exact introduction day is inferred.
- Source support: Registered in the Floating Point Functions plugin in Gnumeric 1.12.62. No retirement is established. Last functioning application version is unverified for this guide.
- Build scope: Numeric constants and neighbors depend on the selected floating type. The numeric definitions distinguish double, long-double and experimental decimal64 configurations. Binary64 examples below are explicitly conditional.
- Evidence dates: Gnumeric release source was retained October 13–14, 2026 and reviewed October 15. Reference calculations and Python library controls ran October 15. They are independent numerical evidence, not native Gnumeric, headless application or GUI execution.
Syntax and the important word “normal”
=FLT.MIN()
There are no inputs or optional arguments. This function inspects the numeric format; it does not return the minimum value in a range. It also does not mean the most negative finite number. The callback returns GNM_MIN, which maps to DBL_MIN in the default double configuration, LDBL_MIN in a long-double configuration, and DECIMAL64_MIN in a decimal64 configuration.
A normal floating-point value uses the format’s full normal significand arrangement. IEEE binary64 also has subnormal positive values smaller than 2^-1022. These continue towards zero with reduced relative precision. The smallest positive binary64 subnormal is 2^-1074, approximately 4.9406564584124654E-324. Therefore FLT.MIN is neither zero nor the smallest nonzero value when gradual underflow is available.
The name alone is easy to misread: the function’s detailed Gnumeric help explicitly says normal. Do not use FLT.MIN as a universal absolute error tolerance, because the meaningful spacing near a measurement of 1 is vastly larger than this number.
Reproducible normal-boundary worksheet
Create TinyValues. Put =FLT.MIN() in B2, =B2/2 in B3 and =B3/B2 in B4. In the binary64 reference model B2 is 2^-1022, B3 is the nonzero subnormal 2^-1023 and B4 is 0.5. This is an exact power-of-two example, avoiding uncertain parsing of an extremely long decimal literal.
Put =FLT.NEXTAFTER(0,"+") in B5 and =B2/B5 in B6. With binary64 gradual underflow, B5 is 2^-1074 and B6 is 4503599627370496, or 2^52. That ratio is a count of uniform minimum-subnormal steps between zero and the normal boundary, not a count of all positive representable values.
Scientific formatting helps distinguish these magnitudes. A cell formatted with two fixed decimals can display all of them as 0.00; changing that display does not itself change the represented number. Subnormal treatment by an actual installed build, its environment and downstream export remains a runtime check, not something inferred from this reference table alone.
Binary64 reference controls
| Formula | Independent binary64 result |
|---|---|
=FLT.MIN() |
Exactly 2^-1022 |
=FLT.MIN()/2 |
Exactly 2^-1023, positive subnormal |
=FLT.MIN()*2 |
Exactly 2^-1021 |
=FLT.MIN()/FLT.MIN() |
1 |
=FLT.MIN()/FLT.NEXTAFTER(0,"+") |
4503599627370496 |
=FLT.MIN()-FLT.NEXTAFTER(FLT.MIN(),0) |
Exactly 2^-1074 |
=1/FLT.MIN() |
Approximately 4.49423283715579E+307 |
The final reciprocal is finite in the reference model. By contrast, reciprocating the smallest subnormal exceeds the binary64 finite range. These two inputs are very different even though both can look like zero in a poorly chosen cell format.
Advanced use: scaling without pretending to restore precision
For a controlled scaling example, enter =FLT.MIN()/2 in C2 and =FLT.MIN() in C3. Their reference ratio =C2/C3 is 0.5. In D2 enter =C2*2^100 and in D3 enter =C3*2^100. The results are the normal values 2^-923 and 2^-922; =D2/D3 is again 0.5. Multiplication by this exact power of two moves these particular representable values into the normal range without changing their ratio.
This does not recover information already lost before C2 and C3 were stored. A tiny real-world input that rounded to zero cannot be repaired by multiplying the stored zero. For a general algorithm, choose scaling before a destructive intermediate operation, track the scale factor, and undo it only when appropriate. This example establishes a specific exact identity, not an all-purpose numerical-stability guarantee.
Errors and troubleshooting
The zero-argument callback has no input-domain validation to trigger. Passing a range or a number as an argument does not turn it into a range-minimum function; it violates the signature. Exact parser error text and plugin activation dialogs are unverified.
If a tiny result appears to vanish, inspect cell formatting, the stored input, preceding arithmetic and the numeric build separately. A decimal64 build uses a different minimum; a long-double build can have a different exponent range even if its radix is still 2. Do not label every discrepancy a calculation bug solely because it differs from the binary64 column. The guide does not claim native subnormal execution, signed-zero preservation or round-trip behavior in another file format.
Sources and related guides
- Gnumeric function-specific help and callback
- Numeric type constants and nextafter mapping
- Scalar argument processing, numeric/boolean predicate, checked numeric result construction
- Python reference nextafter and ulp documentation, retrieved October 15; this supports the independent library check, not an assertion about an installed Gnumeric build.
- Gnumeric official function catalogue