Average Error: 7.4 → 2.8
Time: 17.2s
Precision: 64
\[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
\[\frac{y \cdot \frac{z}{t \cdot z - x} - \left(\frac{1}{-1 + \frac{z}{\frac{x}{t}}} - x\right)}{x + 1}\]
\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}
\frac{y \cdot \frac{z}{t \cdot z - x} - \left(\frac{1}{-1 + \frac{z}{\frac{x}{t}}} - x\right)}{x + 1}
double f(double x, double y, double z, double t) {
        double r580183 = x;
        double r580184 = y;
        double r580185 = z;
        double r580186 = r580184 * r580185;
        double r580187 = r580186 - r580183;
        double r580188 = t;
        double r580189 = r580188 * r580185;
        double r580190 = r580189 - r580183;
        double r580191 = r580187 / r580190;
        double r580192 = r580183 + r580191;
        double r580193 = 1.0;
        double r580194 = r580183 + r580193;
        double r580195 = r580192 / r580194;
        return r580195;
}

double f(double x, double y, double z, double t) {
        double r580196 = y;
        double r580197 = z;
        double r580198 = t;
        double r580199 = r580198 * r580197;
        double r580200 = x;
        double r580201 = r580199 - r580200;
        double r580202 = r580197 / r580201;
        double r580203 = r580196 * r580202;
        double r580204 = 1.0;
        double r580205 = -1.0;
        double r580206 = r580200 / r580198;
        double r580207 = r580197 / r580206;
        double r580208 = r580205 + r580207;
        double r580209 = r580204 / r580208;
        double r580210 = r580209 - r580200;
        double r580211 = r580203 - r580210;
        double r580212 = 1.0;
        double r580213 = r580200 + r580212;
        double r580214 = r580211 / r580213;
        return r580214;
}

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

Original7.4
Target0.3
Herbie2.8
\[\frac{x + \left(\frac{y}{t - \frac{x}{z}} - \frac{x}{t \cdot z - x}\right)}{x + 1}\]

Derivation

  1. Initial program 7.4

    \[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
  2. Simplified7.4

    \[\leadsto \color{blue}{\frac{\frac{z \cdot y - x}{z \cdot t - x} + x}{x + 1}}\]
  3. Using strategy rm
  4. Applied div-sub7.4

    \[\leadsto \frac{\color{blue}{\left(\frac{z \cdot y}{z \cdot t - x} - \frac{x}{z \cdot t - x}\right)} + x}{x + 1}\]
  5. Simplified4.4

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

    \[\leadsto \frac{\left(\frac{z}{\frac{z \cdot t - x}{y}} - \frac{x}{z \cdot t - x}\right) + x}{\color{blue}{1 \cdot \left(x + 1\right)}}\]
  8. Applied *-un-lft-identity4.4

    \[\leadsto \frac{\color{blue}{1 \cdot \left(\left(\frac{z}{\frac{z \cdot t - x}{y}} - \frac{x}{z \cdot t - x}\right) + x\right)}}{1 \cdot \left(x + 1\right)}\]
  9. Applied times-frac4.4

    \[\leadsto \color{blue}{\frac{1}{1} \cdot \frac{\left(\frac{z}{\frac{z \cdot t - x}{y}} - \frac{x}{z \cdot t - x}\right) + x}{x + 1}}\]
  10. Simplified4.4

    \[\leadsto \color{blue}{1} \cdot \frac{\left(\frac{z}{\frac{z \cdot t - x}{y}} - \frac{x}{z \cdot t - x}\right) + x}{x + 1}\]
  11. Simplified2.3

    \[\leadsto 1 \cdot \color{blue}{\frac{\frac{z}{z \cdot t - x} \cdot y - \left(\frac{x}{z \cdot t - x} - x\right)}{x + 1}}\]
  12. Using strategy rm
  13. Applied clear-num2.3

    \[\leadsto 1 \cdot \frac{\frac{z}{z \cdot t - x} \cdot y - \left(\color{blue}{\frac{1}{\frac{z \cdot t - x}{x}}} - x\right)}{x + 1}\]
  14. Simplified2.8

    \[\leadsto 1 \cdot \frac{\frac{z}{z \cdot t - x} \cdot y - \left(\frac{1}{\color{blue}{\frac{z}{\frac{x}{t}} + -1}} - x\right)}{x + 1}\]
  15. Final simplification2.8

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

Reproduce

herbie shell --seed 2019196 
(FPCore (x y z t)
  :name "Diagrams.Trail:splitAtParam  from diagrams-lib-1.3.0.3, A"

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

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