Average Error: 0.1 → 0.1
Time: 1.8s
Precision: binary64
\[\left(\left(\left(-3\right) \cdot {\left(1 - \left|x\right|\right)}^{3} + 3 \cdot {\left(1 - \left|x\right|\right)}^{2}\right) + 3 \cdot \left(1 - \left|x\right|\right)\right) + 1\]
\[3 \cdot \left(\left({\left(1 - \left|x\right|\right)}^{2} - {\left(1 - \left|x\right|\right)}^{3}\right) + \left(1 - \left|x\right|\right)\right) + 1\]

Error

Bits error versus x

Derivation

  1. Initial program 0.1

    \[\left(\left(\left(-3\right) \cdot {\left(1 - \left|x\right|\right)}^{3} + 3 \cdot {\left(1 - \left|x\right|\right)}^{2}\right) + 3 \cdot \left(1 - \left|x\right|\right)\right) + 1\]
  2. Simplified0.1

    \[\leadsto \color{blue}{3 \cdot \left(\left({\left(1 - \left|x\right|\right)}^{2} - {\left(1 - \left|x\right|\right)}^{3}\right) + \left(1 - \left|x\right|\right)\right) + 1}\]
  3. Final simplification0.1

    \[\leadsto 3 \cdot \left(\left({\left(1 - \left|x\right|\right)}^{2} - {\left(1 - \left|x\right|\right)}^{3}\right) + \left(1 - \left|x\right|\right)\right) + 1\]

Reproduce

herbie shell --seed 2020153 
(FPCore (x)
  :name "(+ (+ (+ (* (- 3) (pow (- 1 (fabs x)) 3)) (* 3 (pow (- 1 (fabs x)) 2))) (* 3 (- 1 (fabs x)))) 1)"
  :precision binary64
  (+ (+ (+ (* (neg 3.0) (pow (- 1.0 (fabs x)) 3.0)) (* 3.0 (pow (- 1.0 (fabs x)) 2.0))) (* 3.0 (- 1.0 (fabs x)))) 1.0))