Average Error: 7.2 → 3.8
Time: 4.5s
Precision: 64
\[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
\[\begin{array}{l} \mathbf{if}\;z \le -1.91459443856608494 \cdot 10^{200} \lor \neg \left(z \le 8.3915759016975398 \cdot 10^{105}\right):\\ \;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{x + \left(y \cdot z - x\right) \cdot \frac{1}{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 -1.91459443856608494 \cdot 10^{200} \lor \neg \left(z \le 8.3915759016975398 \cdot 10^{105}\right):\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\

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

\end{array}
double f(double x, double y, double z, double t) {
        double r765614 = x;
        double r765615 = y;
        double r765616 = z;
        double r765617 = r765615 * r765616;
        double r765618 = r765617 - r765614;
        double r765619 = t;
        double r765620 = r765619 * r765616;
        double r765621 = r765620 - r765614;
        double r765622 = r765618 / r765621;
        double r765623 = r765614 + r765622;
        double r765624 = 1.0;
        double r765625 = r765614 + r765624;
        double r765626 = r765623 / r765625;
        return r765626;
}

double f(double x, double y, double z, double t) {
        double r765627 = z;
        double r765628 = -1.914594438566085e+200;
        bool r765629 = r765627 <= r765628;
        double r765630 = 8.39157590169754e+105;
        bool r765631 = r765627 <= r765630;
        double r765632 = !r765631;
        bool r765633 = r765629 || r765632;
        double r765634 = x;
        double r765635 = y;
        double r765636 = t;
        double r765637 = r765635 / r765636;
        double r765638 = r765634 + r765637;
        double r765639 = 1.0;
        double r765640 = r765634 + r765639;
        double r765641 = r765638 / r765640;
        double r765642 = r765635 * r765627;
        double r765643 = r765642 - r765634;
        double r765644 = 1.0;
        double r765645 = r765636 * r765627;
        double r765646 = r765645 - r765634;
        double r765647 = r765644 / r765646;
        double r765648 = r765643 * r765647;
        double r765649 = r765634 + r765648;
        double r765650 = r765649 / r765640;
        double r765651 = r765633 ? r765641 : r765650;
        return r765651;
}

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.2
Target0.4
Herbie3.8
\[\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.914594438566085e+200 or 8.39157590169754e+105 < z

    1. Initial program 21.1

      \[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
    2. Taylor expanded around inf 7.1

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

    if -1.914594438566085e+200 < z < 8.39157590169754e+105

    1. Initial program 2.6

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

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

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

Reproduce

herbie shell --seed 2020027 
(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)))