Average Error: 7.7 → 3.6
Time: 12.4s
Precision: 64
\[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
\[\begin{array}{l} \mathbf{if}\;z \le -14199554388871560283044184064 \lor \neg \left(z \le 3.465832951891264563091538161907127476611 \cdot 10^{89}\right):\\ \;\;\;\;\frac{x + 1 \cdot \frac{y}{t}}{x + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{x + 1 \cdot \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\\ \end{array}\]
\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}
\begin{array}{l}
\mathbf{if}\;z \le -14199554388871560283044184064 \lor \neg \left(z \le 3.465832951891264563091538161907127476611 \cdot 10^{89}\right):\\
\;\;\;\;\frac{x + 1 \cdot \frac{y}{t}}{x + 1}\\

\mathbf{else}:\\
\;\;\;\;\frac{x + 1 \cdot \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\\

\end{array}
double f(double x, double y, double z, double t) {
        double r649668 = x;
        double r649669 = y;
        double r649670 = z;
        double r649671 = r649669 * r649670;
        double r649672 = r649671 - r649668;
        double r649673 = t;
        double r649674 = r649673 * r649670;
        double r649675 = r649674 - r649668;
        double r649676 = r649672 / r649675;
        double r649677 = r649668 + r649676;
        double r649678 = 1.0;
        double r649679 = r649668 + r649678;
        double r649680 = r649677 / r649679;
        return r649680;
}

double f(double x, double y, double z, double t) {
        double r649681 = z;
        double r649682 = -1.419955438887156e+28;
        bool r649683 = r649681 <= r649682;
        double r649684 = 3.4658329518912646e+89;
        bool r649685 = r649681 <= r649684;
        double r649686 = !r649685;
        bool r649687 = r649683 || r649686;
        double r649688 = x;
        double r649689 = 1.0;
        double r649690 = y;
        double r649691 = t;
        double r649692 = r649690 / r649691;
        double r649693 = r649689 * r649692;
        double r649694 = r649688 + r649693;
        double r649695 = 1.0;
        double r649696 = r649688 + r649695;
        double r649697 = r649694 / r649696;
        double r649698 = r649690 * r649681;
        double r649699 = r649698 - r649688;
        double r649700 = r649691 * r649681;
        double r649701 = r649700 - r649688;
        double r649702 = r649699 / r649701;
        double r649703 = r649689 * r649702;
        double r649704 = r649688 + r649703;
        double r649705 = r649704 / r649696;
        double r649706 = r649687 ? r649697 : r649705;
        return r649706;
}

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.7
Target0.4
Herbie3.6
\[\frac{x + \left(\frac{y}{t - \frac{x}{z}} - \frac{x}{t \cdot z - x}\right)}{x + 1}\]

Derivation

  1. Split input into 2 regimes
  2. if z < -1.419955438887156e+28 or 3.4658329518912646e+89 < z

    1. Initial program 18.6

      \[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
    2. Using strategy rm
    3. Applied div-inv18.6

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

      \[\leadsto \frac{x + \color{blue}{\left(1 \cdot \left(y \cdot z - x\right)\right)} \cdot \frac{1}{t \cdot z - x}}{x + 1}\]
    6. Applied associate-*l*18.6

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

      \[\leadsto \frac{x + 1 \cdot \color{blue}{\frac{y \cdot z - x}{t \cdot z - x}}}{x + 1}\]
    8. Taylor expanded around inf 8.4

      \[\leadsto \frac{x + 1 \cdot \color{blue}{\frac{y}{t}}}{x + 1}\]

    if -1.419955438887156e+28 < z < 3.4658329518912646e+89

    1. Initial program 0.6

      \[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
    2. Using strategy rm
    3. Applied div-inv0.6

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

      \[\leadsto \frac{x + \color{blue}{\left(1 \cdot \left(y \cdot z - x\right)\right)} \cdot \frac{1}{t \cdot z - x}}{x + 1}\]
    6. Applied associate-*l*0.6

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

      \[\leadsto \frac{x + 1 \cdot \color{blue}{\frac{y \cdot z - x}{t \cdot z - x}}}{x + 1}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification3.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -14199554388871560283044184064 \lor \neg \left(z \le 3.465832951891264563091538161907127476611 \cdot 10^{89}\right):\\ \;\;\;\;\frac{x + 1 \cdot \frac{y}{t}}{x + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{x + 1 \cdot \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\\ \end{array}\]

Reproduce

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

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

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