Average Error: 0.3 → 0.3
Time: 2.7s
Precision: binary64
\[b + \frac{t}{6} \cdot \left(\left(\left(\left(\left(\left(-t\right) \cdot t + 3 \cdot t\right) - 2\right) \cdot a + \left(3 \cdot \left(\left(t \cdot t - 2 \cdot t\right) - 1\right)\right) \cdot b\right) + \left(3 \cdot \left(\left(\left(-t\right) \cdot t + t\right) + 2\right)\right) \cdot c\right) + \left(t \cdot t - 1\right) \cdot d\right)\]
\[b + \frac{t}{6} \cdot \left(\left(\left(\left(\left(\left(-t\right) \cdot t + 3 \cdot t\right) - 2\right) \cdot a + \left(3 \cdot \left(\left(t \cdot t - 2 \cdot t\right) - 1\right)\right) \cdot b\right) + \left(3 \cdot \left(\left(\left(-t\right) \cdot t + t\right) + 2\right)\right) \cdot c\right) + \left(t \cdot t - 1\right) \cdot d\right)\]

Error

Bits error versus b

Bits error versus t

Bits error versus a

Bits error versus c

Bits error versus d

Derivation

  1. Initial program 0.3

    \[b + \frac{t}{6} \cdot \left(\left(\left(\left(\left(\left(-t\right) \cdot t + 3 \cdot t\right) - 2\right) \cdot a + \left(3 \cdot \left(\left(t \cdot t - 2 \cdot t\right) - 1\right)\right) \cdot b\right) + \left(3 \cdot \left(\left(\left(-t\right) \cdot t + t\right) + 2\right)\right) \cdot c\right) + \left(t \cdot t - 1\right) \cdot d\right)\]
  2. Final simplification0.3

    \[\leadsto b + \frac{t}{6} \cdot \left(\left(\left(\left(\left(\left(-t\right) \cdot t + 3 \cdot t\right) - 2\right) \cdot a + \left(3 \cdot \left(\left(t \cdot t - 2 \cdot t\right) - 1\right)\right) \cdot b\right) + \left(3 \cdot \left(\left(\left(-t\right) \cdot t + t\right) + 2\right)\right) \cdot c\right) + \left(t \cdot t - 1\right) \cdot d\right)\]

Reproduce

herbie shell --seed 2020153 
(FPCore (b t a c d)
  :name "(+ b (* (/ t 6.0) (+ (+ (+ (* (- (+ (* (- t) t) (* 3.0 t)) 2.0) a) (* (* 3.0 (- (- (* t t) (* 2.0 t)) 1.0)) b)) (* (* 3.0 (+ (+ (* (- t) t) t) 2.0)) c)) (* (- (* t t) 1.0) d))))"
  :precision binary64
  (+ b (* (/ t 6.0) (+ (+ (+ (* (- (+ (* (neg t) t) (* 3.0 t)) 2.0) a) (* (* 3.0 (- (- (* t t) (* 2.0 t)) 1.0)) b)) (* (* 3.0 (+ (+ (* (neg t) t) t) 2.0)) c)) (* (- (* t t) 1.0) d)))))