Average Error: 0.3 → 0.3
Time: 3.0s
Precision: binary64
\[\left(\left(a + \left(3 \cdot \left(\left(-a\right) + b\right)\right) \cdot t\right) + \left(\left(3 \cdot \left(\left(a - 2 \cdot b\right) + c\right)\right) \cdot t\right) \cdot t\right) + \left(\left(\left(\left(\left(\left(-a\right) + 3 \cdot b\right) - 3 \cdot c\right) + d\right) \cdot t\right) \cdot t\right) \cdot t\]
\[\left(\left(a + \left(3 \cdot \left(\left(-a\right) + b\right)\right) \cdot t\right) + \left(\left(3 \cdot \left(\left(a - 2 \cdot b\right) + c\right)\right) \cdot t\right) \cdot t\right) + \left(\left(\left(\left(\left(\left(-a\right) + 3 \cdot b\right) - 3 \cdot c\right) + d\right) \cdot t\right) \cdot t\right) \cdot t\]

Error

Bits error versus a

Bits error versus b

Bits error versus t

Bits error versus c

Bits error versus d

Derivation

  1. Initial program 0.3

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

    \[\leadsto \left(\left(a + \left(3 \cdot \left(\left(-a\right) + b\right)\right) \cdot t\right) + \left(\left(3 \cdot \left(\left(a - 2 \cdot b\right) + c\right)\right) \cdot t\right) \cdot t\right) + \left(\left(\left(\left(\left(\left(-a\right) + 3 \cdot b\right) - 3 \cdot c\right) + d\right) \cdot t\right) \cdot t\right) \cdot t\]

Reproduce

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