Average Error: 31.5 → 31.5
Time: 2.0s
Precision: binary64
\[\frac{tp \cdot tn - fp \cdot fn}{\sqrt{\left(\left(\left(tp + fp\right) \cdot \left(tp + fn\right)\right) \cdot \left(tn + fp\right)\right) \cdot \left(tn + fn\right)}} - \left(-timeout\right) \cdot 100\]
\[timeout \cdot 100 + \frac{tp \cdot tn - fp \cdot fn}{\sqrt{\left(\left(\left(tp + fp\right) \cdot \left(tp + fn\right)\right) \cdot \left(tn + fp\right)\right) \cdot \left(tn + fn\right)}}\]

Error

Bits error versus tp

Bits error versus tn

Bits error versus fp

Bits error versus fn

Bits error versus timeout

Derivation

  1. Initial program 31.5

    \[\frac{tp \cdot tn - fp \cdot fn}{\sqrt{\left(\left(\left(tp + fp\right) \cdot \left(tp + fn\right)\right) \cdot \left(tn + fp\right)\right) \cdot \left(tn + fn\right)}} - \left(-timeout\right) \cdot 100\]
  2. Simplified31.5

    \[\leadsto \color{blue}{timeout \cdot 100 + \frac{tp \cdot tn - fp \cdot fn}{\sqrt{\left(\left(\left(tp + fp\right) \cdot \left(tp + fn\right)\right) \cdot \left(tn + fp\right)\right) \cdot \left(tn + fn\right)}}}\]
  3. Final simplification31.5

    \[\leadsto timeout \cdot 100 + \frac{tp \cdot tn - fp \cdot fn}{\sqrt{\left(\left(\left(tp + fp\right) \cdot \left(tp + fn\right)\right) \cdot \left(tn + fp\right)\right) \cdot \left(tn + fn\right)}}\]

Reproduce

herbie shell --seed 2020153 
(FPCore (tp tn fp fn timeout)
  :name "(- (/ (- (* tp tn) (* fp fn)) (sqrt (* (* (* (+ tp fp) (+ tp fn)) (+ tn fp)) (+ tn fn)))) (* (- timeout) 100))"
  :precision binary64
  (- (/ (- (* tp tn) (* fp fn)) (sqrt (* (* (* (+ tp fp) (+ tp fn)) (+ tn fp)) (+ tn fn)))) (* (neg timeout) 100.0)))