Average Error: 7.5 → 3.5
Time: 12.8s
Precision: 64
\[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
\[\begin{array}{l} \mathbf{if}\;z \le -4.114609088417829740656345957882149152422 \cdot 10^{81} \lor \neg \left(z \le 1.517947538902801456719293148722147490949 \cdot 10^{62}\right):\\ \;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\frac{x + 1}{x + \frac{y \cdot z - x}{t \cdot z - x}}}\\ \end{array}\]
\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}
\begin{array}{l}
\mathbf{if}\;z \le -4.114609088417829740656345957882149152422 \cdot 10^{81} \lor \neg \left(z \le 1.517947538902801456719293148722147490949 \cdot 10^{62}\right):\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\

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

\end{array}
double f(double x, double y, double z, double t) {
        double r444654 = x;
        double r444655 = y;
        double r444656 = z;
        double r444657 = r444655 * r444656;
        double r444658 = r444657 - r444654;
        double r444659 = t;
        double r444660 = r444659 * r444656;
        double r444661 = r444660 - r444654;
        double r444662 = r444658 / r444661;
        double r444663 = r444654 + r444662;
        double r444664 = 1.0;
        double r444665 = r444654 + r444664;
        double r444666 = r444663 / r444665;
        return r444666;
}

double f(double x, double y, double z, double t) {
        double r444667 = z;
        double r444668 = -4.11460908841783e+81;
        bool r444669 = r444667 <= r444668;
        double r444670 = 1.5179475389028015e+62;
        bool r444671 = r444667 <= r444670;
        double r444672 = !r444671;
        bool r444673 = r444669 || r444672;
        double r444674 = x;
        double r444675 = y;
        double r444676 = t;
        double r444677 = r444675 / r444676;
        double r444678 = r444674 + r444677;
        double r444679 = 1.0;
        double r444680 = r444674 + r444679;
        double r444681 = r444678 / r444680;
        double r444682 = 1.0;
        double r444683 = r444675 * r444667;
        double r444684 = r444683 - r444674;
        double r444685 = r444676 * r444667;
        double r444686 = r444685 - r444674;
        double r444687 = r444684 / r444686;
        double r444688 = r444674 + r444687;
        double r444689 = r444680 / r444688;
        double r444690 = r444682 / r444689;
        double r444691 = r444673 ? r444681 : r444690;
        return r444691;
}

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.5
Target0.3
Herbie3.5
\[\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 < -4.11460908841783e+81 or 1.5179475389028015e+62 < z

    1. Initial program 18.9

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

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

    if -4.11460908841783e+81 < z < 1.5179475389028015e+62

    1. Initial program 0.7

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

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

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

Reproduce

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