Average Error: 28.2 → 28.2
Time: 5.8s
Precision: binary64
\[\left(\left(-{a1}^{2}\right) \cdot \left(\left(-\left(\left(\left(-Bh1\right) \cdot \ell\right) \cdot p - Bh0 \cdot p\right)\right) \cdot \left(Bh0 \cdot y + 1\right) - \left(Bh1 \cdot \left(a1 - \left(Bh0 \cdot \ell\right) \cdot p\right)\right) \cdot y\right) + \left(\left(\left(\left(2 \cdot Bh0\right) \cdot a1\right) \cdot p\right) \cdot \left(a1 - \left(Bh0 \cdot \ell\right) \cdot p\right)\right) \cdot \left(Bh0 \cdot y + 1\right)\right) - \left({Bh0}^{2} \cdot a2\right) \cdot {p}^{2}\]
\[\left(\left(\left(\left(2 \cdot Bh0\right) \cdot a1\right) \cdot p\right) \cdot \left(a1 - \left(Bh0 \cdot \ell\right) \cdot p\right)\right) \cdot \left(Bh0 \cdot y + 1\right) - \left(\left({Bh0}^{2} \cdot a2\right) \cdot {p}^{2} - \left(\left(\left(\left(-Bh1\right) \cdot \ell\right) \cdot p - Bh0 \cdot p\right) \cdot \left(Bh0 \cdot y + 1\right) + \left(Bh1 \cdot \left(a1 - \left(Bh0 \cdot \ell\right) \cdot p\right)\right) \cdot y\right) \cdot {a1}^{2}\right)\]

Error

Bits error versus a1

Bits error versus Bh1

Bits error versus l

Bits error versus p

Bits error versus Bh0

Bits error versus y

Bits error versus a2

Derivation

  1. Initial program 28.2

    \[\left(\left(-{a1}^{2}\right) \cdot \left(\left(-\left(\left(\left(-Bh1\right) \cdot \ell\right) \cdot p - Bh0 \cdot p\right)\right) \cdot \left(Bh0 \cdot y + 1\right) - \left(Bh1 \cdot \left(a1 - \left(Bh0 \cdot \ell\right) \cdot p\right)\right) \cdot y\right) + \left(\left(\left(\left(2 \cdot Bh0\right) \cdot a1\right) \cdot p\right) \cdot \left(a1 - \left(Bh0 \cdot \ell\right) \cdot p\right)\right) \cdot \left(Bh0 \cdot y + 1\right)\right) - \left({Bh0}^{2} \cdot a2\right) \cdot {p}^{2}\]
  2. Simplified28.2

    \[\leadsto \color{blue}{\left(\left(\left(\left(2 \cdot Bh0\right) \cdot a1\right) \cdot p\right) \cdot \left(a1 - \left(Bh0 \cdot \ell\right) \cdot p\right)\right) \cdot \left(Bh0 \cdot y + 1\right) - \left(\left({Bh0}^{2} \cdot a2\right) \cdot {p}^{2} - \left(\left(\left(\left(-Bh1\right) \cdot \ell\right) \cdot p - Bh0 \cdot p\right) \cdot \left(Bh0 \cdot y + 1\right) + \left(Bh1 \cdot \left(a1 - \left(Bh0 \cdot \ell\right) \cdot p\right)\right) \cdot y\right) \cdot {a1}^{2}\right)}\]
  3. Final simplification28.2

    \[\leadsto \left(\left(\left(\left(2 \cdot Bh0\right) \cdot a1\right) \cdot p\right) \cdot \left(a1 - \left(Bh0 \cdot \ell\right) \cdot p\right)\right) \cdot \left(Bh0 \cdot y + 1\right) - \left(\left({Bh0}^{2} \cdot a2\right) \cdot {p}^{2} - \left(\left(\left(\left(-Bh1\right) \cdot \ell\right) \cdot p - Bh0 \cdot p\right) \cdot \left(Bh0 \cdot y + 1\right) + \left(Bh1 \cdot \left(a1 - \left(Bh0 \cdot \ell\right) \cdot p\right)\right) \cdot y\right) \cdot {a1}^{2}\right)\]

Reproduce

herbie shell --seed 2020152 
(FPCore (a1 Bh1 l p Bh0 y a2)
  :name "(- (+ (* (- (pow a1 2)) (- (* (- (- (* (* (- Bh1) l) p) (* Bh0 p))) (+ (* Bh0 y) 1)) (* (* Bh1 (- a1 (* (* Bh0 l) p))) y))) (* (* (* (* (* 2 Bh0) a1) p) (- a1 (* (* Bh0 l) p))) (+ (* Bh0 y) 1))) (* (* (pow Bh0 2) a2) (pow p 2)))"
  :precision binary64
  (- (+ (* (neg (pow a1 2.0)) (- (* (neg (- (* (* (neg Bh1) l) p) (* Bh0 p))) (+ (* Bh0 y) 1.0)) (* (* Bh1 (- a1 (* (* Bh0 l) p))) y))) (* (* (* (* (* 2.0 Bh0) a1) p) (- a1 (* (* Bh0 l) p))) (+ (* Bh0 y) 1.0))) (* (* (pow Bh0 2.0) a2) (pow p 2.0))))