Average Error: 3.9 → 1.6
Time: 1.1m
Precision: 64
\[\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\]
\[x - \left(\frac{\frac{y}{3}}{z} - \frac{\frac{1}{3}}{\frac{y}{\frac{t}{z}}}\right)\]
\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}
x - \left(\frac{\frac{y}{3}}{z} - \frac{\frac{1}{3}}{\frac{y}{\frac{t}{z}}}\right)
double f(double x, double y, double z, double t) {
        double r33505047 = x;
        double r33505048 = y;
        double r33505049 = z;
        double r33505050 = 3.0;
        double r33505051 = r33505049 * r33505050;
        double r33505052 = r33505048 / r33505051;
        double r33505053 = r33505047 - r33505052;
        double r33505054 = t;
        double r33505055 = r33505051 * r33505048;
        double r33505056 = r33505054 / r33505055;
        double r33505057 = r33505053 + r33505056;
        return r33505057;
}

double f(double x, double y, double z, double t) {
        double r33505058 = x;
        double r33505059 = y;
        double r33505060 = 3.0;
        double r33505061 = r33505059 / r33505060;
        double r33505062 = z;
        double r33505063 = r33505061 / r33505062;
        double r33505064 = 1.0;
        double r33505065 = r33505064 / r33505060;
        double r33505066 = t;
        double r33505067 = r33505066 / r33505062;
        double r33505068 = r33505059 / r33505067;
        double r33505069 = r33505065 / r33505068;
        double r33505070 = r33505063 - r33505069;
        double r33505071 = r33505058 - r33505070;
        return r33505071;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original3.9
Target1.6
Herbie1.6
\[\left(x - \frac{y}{z \cdot 3}\right) + \frac{\frac{t}{z \cdot 3}}{y}\]

Derivation

  1. Initial program 3.9

    \[\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\]
  2. Using strategy rm
  3. Applied associate-/r*1.6

    \[\leadsto \left(x - \frac{y}{z \cdot 3}\right) + \color{blue}{\frac{\frac{t}{z \cdot 3}}{y}}\]
  4. Using strategy rm
  5. Applied *-un-lft-identity1.6

    \[\leadsto \left(x - \frac{\color{blue}{1 \cdot y}}{z \cdot 3}\right) + \frac{\frac{t}{z \cdot 3}}{y}\]
  6. Applied times-frac1.7

    \[\leadsto \left(x - \color{blue}{\frac{1}{z} \cdot \frac{y}{3}}\right) + \frac{\frac{t}{z \cdot 3}}{y}\]
  7. Using strategy rm
  8. Applied associate-+l-1.7

    \[\leadsto \color{blue}{x - \left(\frac{1}{z} \cdot \frac{y}{3} - \frac{\frac{t}{z \cdot 3}}{y}\right)}\]
  9. Simplified1.6

    \[\leadsto x - \color{blue}{\left(\frac{\frac{y}{3}}{z} - \frac{\frac{t}{3 \cdot z}}{y}\right)}\]
  10. Using strategy rm
  11. Applied *-un-lft-identity1.6

    \[\leadsto x - \left(\frac{\frac{y}{3}}{z} - \frac{\frac{\color{blue}{1 \cdot t}}{3 \cdot z}}{y}\right)\]
  12. Applied times-frac1.6

    \[\leadsto x - \left(\frac{\frac{y}{3}}{z} - \frac{\color{blue}{\frac{1}{3} \cdot \frac{t}{z}}}{y}\right)\]
  13. Applied associate-/l*1.6

    \[\leadsto x - \left(\frac{\frac{y}{3}}{z} - \color{blue}{\frac{\frac{1}{3}}{\frac{y}{\frac{t}{z}}}}\right)\]
  14. Final simplification1.6

    \[\leadsto x - \left(\frac{\frac{y}{3}}{z} - \frac{\frac{1}{3}}{\frac{y}{\frac{t}{z}}}\right)\]

Reproduce

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

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

  (+ (- x (/ y (* z 3.0))) (/ t (* (* z 3.0) y))))