Average Error: 0.0 → 0.0
Time: 9.9s
Precision: 64
\[\left(\frac{1}{8} \cdot x - \frac{y \cdot z}{2}\right) + t\]
\[\mathsf{fma}\left(-\frac{y}{2}, z, \mathsf{fma}\left(\frac{x}{8}, 1, t\right)\right)\]
\left(\frac{1}{8} \cdot x - \frac{y \cdot z}{2}\right) + t
\mathsf{fma}\left(-\frac{y}{2}, z, \mathsf{fma}\left(\frac{x}{8}, 1, t\right)\right)
double f(double x, double y, double z, double t) {
        double r597943 = 1.0;
        double r597944 = 8.0;
        double r597945 = r597943 / r597944;
        double r597946 = x;
        double r597947 = r597945 * r597946;
        double r597948 = y;
        double r597949 = z;
        double r597950 = r597948 * r597949;
        double r597951 = 2.0;
        double r597952 = r597950 / r597951;
        double r597953 = r597947 - r597952;
        double r597954 = t;
        double r597955 = r597953 + r597954;
        return r597955;
}

double f(double x, double y, double z, double t) {
        double r597956 = y;
        double r597957 = 2.0;
        double r597958 = r597956 / r597957;
        double r597959 = -r597958;
        double r597960 = z;
        double r597961 = x;
        double r597962 = 8.0;
        double r597963 = r597961 / r597962;
        double r597964 = 1.0;
        double r597965 = t;
        double r597966 = fma(r597963, r597964, r597965);
        double r597967 = fma(r597959, r597960, r597966);
        return r597967;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Target

Original0.0
Target0.0
Herbie0.0
\[\left(\frac{x}{8} + t\right) - \frac{z}{2} \cdot y\]

Derivation

  1. Initial program 0.0

    \[\left(\frac{1}{8} \cdot x - \frac{y \cdot z}{2}\right) + t\]
  2. Simplified0.0

    \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{x}{8}, 1, t\right) - \frac{y \cdot z}{2}}\]
  3. Using strategy rm
  4. Applied *-un-lft-identity0.0

    \[\leadsto \mathsf{fma}\left(\frac{x}{8}, 1, t\right) - \color{blue}{1 \cdot \frac{y \cdot z}{2}}\]
  5. Applied *-un-lft-identity0.0

    \[\leadsto \color{blue}{1 \cdot \mathsf{fma}\left(\frac{x}{8}, 1, t\right)} - 1 \cdot \frac{y \cdot z}{2}\]
  6. Applied distribute-lft-out--0.0

    \[\leadsto \color{blue}{1 \cdot \left(\mathsf{fma}\left(\frac{x}{8}, 1, t\right) - \frac{y \cdot z}{2}\right)}\]
  7. Simplified0.0

    \[\leadsto 1 \cdot \color{blue}{\mathsf{fma}\left(-\frac{y}{2}, z, \mathsf{fma}\left(\frac{x}{8}, 1, t\right)\right)}\]
  8. Final simplification0.0

    \[\leadsto \mathsf{fma}\left(-\frac{y}{2}, z, \mathsf{fma}\left(\frac{x}{8}, 1, t\right)\right)\]

Reproduce

herbie shell --seed 2019179 +o rules:numerics
(FPCore (x y z t)
  :name "Diagrams.Solve.Polynomial:quartForm  from diagrams-solve-0.1, B"

  :herbie-target
  (- (+ (/ x 8.0) t) (* (/ z 2.0) y))

  (+ (- (* (/ 1.0 8.0) x) (/ (* y z) 2.0)) t))