Average Error: 0.2 → 0.1
Time: 1.1s
Precision: binary64
\[\frac{\left(\left(\left(\left(-f\right) \cdot f\right) \cdot f + \left(3 \cdot f\right) \cdot f\right) - 3 \cdot f\right) + 1}{6}\]
\[\frac{1}{6} + \frac{\left(3 - f\right) \cdot f - 3}{6} \cdot f\]

Error

Bits error versus f

Derivation

  1. Initial program 0.2

    \[\frac{\left(\left(\left(\left(-f\right) \cdot f\right) \cdot f + \left(3 \cdot f\right) \cdot f\right) - 3 \cdot f\right) + 1}{6}\]
  2. Simplified0.1

    \[\leadsto \color{blue}{\frac{1}{6} + \frac{\left(3 - f\right) \cdot f - 3}{6} \cdot f}\]
  3. Final simplification0.1

    \[\leadsto \frac{1}{6} + \frac{\left(3 - f\right) \cdot f - 3}{6} \cdot f\]

Reproduce

herbie shell --seed 2020153 
(FPCore (f)
  :name "(/ (+ (- (+ (* (* (- f) f) f) (* (* 3 f) f)) (* 3 f)) 1) 6)"
  :precision binary64
  (/ (+ (- (+ (* (* (neg f) f) f) (* (* 3.0 f) f)) (* 3.0 f)) 1.0) 6.0))