Three parts, in order
The heat index is not one equation. It is a procedure with three branches, and skipping any of them is how implementations end up disagreeing.
-
Try the simple form first. Compute
0.5 × (T + 61 + (T − 68) × 1.2 + RH × 0.094), average it with the air temperature, and if that average is below 80°F, the simple form is the answer. No band applies down there. - Otherwise use the regression. Nine terms in T and RH, below.
- Then apply whichever correction fits. One for very dry air, one for very humid air. Both are official and both are commonly forgotten.
The regression
With T in degrees Fahrenheit and RH as a percentage:
Rothfusz, 1990
- HI =
−42.379 + 2.04901523·T + 10.14333127·RH − 0.22475541·T·RH − 0.00683783·T² − 0.05481717·RH² + 0.00122874·T²·RH + 0.00085282·T·RH² − 0.00000199·T²·RH²
The coefficients have no individual meaning. They are the output of a curve fit, which is why nobody can tell you what −0.00000199 represents.
The two corrections
Dry air, when RH < 13% and 80°F ≤ T ≤ 112°F — subtract:
- Adjustment
((13 − RH) / 4) × √((17 − |T − 95|) / 17)
Humid air, when RH > 85% and 80°F ≤ T ≤ 87°F — add:
- Adjustment
((RH − 85) / 10) × ((87 − T) / 5)
That second one is the source of the discrepancy between the equation and the printed NOAA chart. Twelve cells of the table sit inside its range, and the graphic does not apply it. The chart guide shows exactly where.
Where it stops being valid
- Below 80°F, the regression is not used. If you evaluate the polynomial down there anyway, it produces nonsense — negative heat indices at low temperatures.
- The reference person is specific. Steadman's conditions assume 1.7 m and 67 kg, walking, in long trousers and a short-sleeved shirt, in shade, with a 2.5 m/s breeze. Someone stationary in still air, or working hard, or in protective clothing, is not that person.
- Shade only. Full sun adds up to 15°F, which is not in the equation.
- No wind term at all. A 10 m/s wind changes the real thermal load substantially and changes the heat index not at all. If wind matters to your decision, you want WBGT.
Checking an implementation
Three test values catch most mistakes:
| T | RH | Heat index | What it tests |
|---|---|---|---|
| 90°F | 70% | 106°F | The plain regression |
| 100°F | 10% | Below 100°F | The dry-air correction is present |
| 80°F | 100% | 86°F | The humid-air correction is present |
| 75°F | 60% | No band | The Steadman fallback, and no invented category |
The last row is the one most worth checking in someone else's app. A needle sitting in "Caution" at 78°F means the fallback branch is missing, and a category has been invented that no published source defines.