Average Error: 7.1 → 3.2
Time: 11.3s
Precision: 64
\[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1.0}\]
\[\begin{array}{l} \mathbf{if}\;z \le -4.397554981755772 \cdot 10^{+143}:\\ \;\;\;\;\frac{x + \frac{y}{t}}{x + 1.0}\\ \mathbf{elif}\;z \le 1.2365924477248178 \cdot 10^{+144}:\\ \;\;\;\;\frac{1}{\frac{x + 1.0}{\frac{y \cdot z - x}{t \cdot z - x} + x}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x + \frac{y}{t}}{x + 1.0}\\ \end{array}\]
\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1.0}
\begin{array}{l}
\mathbf{if}\;z \le -4.397554981755772 \cdot 10^{+143}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1.0}\\

\mathbf{elif}\;z \le 1.2365924477248178 \cdot 10^{+144}:\\
\;\;\;\;\frac{1}{\frac{x + 1.0}{\frac{y \cdot z - x}{t \cdot z - x} + x}}\\

\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1.0}\\

\end{array}
double f(double x, double y, double z, double t) {
        double r12317740 = x;
        double r12317741 = y;
        double r12317742 = z;
        double r12317743 = r12317741 * r12317742;
        double r12317744 = r12317743 - r12317740;
        double r12317745 = t;
        double r12317746 = r12317745 * r12317742;
        double r12317747 = r12317746 - r12317740;
        double r12317748 = r12317744 / r12317747;
        double r12317749 = r12317740 + r12317748;
        double r12317750 = 1.0;
        double r12317751 = r12317740 + r12317750;
        double r12317752 = r12317749 / r12317751;
        return r12317752;
}

double f(double x, double y, double z, double t) {
        double r12317753 = z;
        double r12317754 = -4.397554981755772e+143;
        bool r12317755 = r12317753 <= r12317754;
        double r12317756 = x;
        double r12317757 = y;
        double r12317758 = t;
        double r12317759 = r12317757 / r12317758;
        double r12317760 = r12317756 + r12317759;
        double r12317761 = 1.0;
        double r12317762 = r12317756 + r12317761;
        double r12317763 = r12317760 / r12317762;
        double r12317764 = 1.2365924477248178e+144;
        bool r12317765 = r12317753 <= r12317764;
        double r12317766 = 1.0;
        double r12317767 = r12317757 * r12317753;
        double r12317768 = r12317767 - r12317756;
        double r12317769 = r12317758 * r12317753;
        double r12317770 = r12317769 - r12317756;
        double r12317771 = r12317768 / r12317770;
        double r12317772 = r12317771 + r12317756;
        double r12317773 = r12317762 / r12317772;
        double r12317774 = r12317766 / r12317773;
        double r12317775 = r12317765 ? r12317774 : r12317763;
        double r12317776 = r12317755 ? r12317763 : r12317775;
        return r12317776;
}

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

Derivation

  1. Split input into 2 regimes
  2. if z < -4.397554981755772e+143 or 1.2365924477248178e+144 < z

    1. Initial program 21.9

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

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

    if -4.397554981755772e+143 < z < 1.2365924477248178e+144

    1. Initial program 2.0

      \[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1.0}\]
    2. Using strategy rm
    3. Applied clear-num2.0

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -4.397554981755772 \cdot 10^{+143}:\\ \;\;\;\;\frac{x + \frac{y}{t}}{x + 1.0}\\ \mathbf{elif}\;z \le 1.2365924477248178 \cdot 10^{+144}:\\ \;\;\;\;\frac{1}{\frac{x + 1.0}{\frac{y \cdot z - x}{t \cdot z - x} + x}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x + \frac{y}{t}}{x + 1.0}\\ \end{array}\]

Reproduce

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