Average Error: 7.0 → 5.5
Time: 12.6s
Precision: 64
\[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -5.2397542741238042 \cdot 10^{75}:\\ \;\;\;\;\frac{x}{x + 1}\\ \mathbf{elif}\;x \le 1.6767146492905612 \cdot 10^{-298}:\\ \;\;\;\;\frac{\frac{\mathsf{fma}\left(y, z, -x\right)}{\mathsf{fma}\left(z, t, -x\right)} + x}{x + 1}\\ \mathbf{elif}\;x \le 8.170967915147022 \cdot 10^{-257}:\\ \;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\ \mathbf{elif}\;x \le 1.5358753841431232 \cdot 10^{90}:\\ \;\;\;\;\frac{\frac{\mathsf{fma}\left(y, z, -x\right)}{\mathsf{fma}\left(z, t, -x\right)} + x}{x + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{x + 1}\\ \end{array}\]
\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}
\begin{array}{l}
\mathbf{if}\;x \le -5.2397542741238042 \cdot 10^{75}:\\
\;\;\;\;\frac{x}{x + 1}\\

\mathbf{elif}\;x \le 1.6767146492905612 \cdot 10^{-298}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(y, z, -x\right)}{\mathsf{fma}\left(z, t, -x\right)} + x}{x + 1}\\

\mathbf{elif}\;x \le 8.170967915147022 \cdot 10^{-257}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\

\mathbf{elif}\;x \le 1.5358753841431232 \cdot 10^{90}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(y, z, -x\right)}{\mathsf{fma}\left(z, t, -x\right)} + x}{x + 1}\\

\mathbf{else}:\\
\;\;\;\;\frac{x}{x + 1}\\

\end{array}
double f(double x, double y, double z, double t) {
        double r780924 = x;
        double r780925 = y;
        double r780926 = z;
        double r780927 = r780925 * r780926;
        double r780928 = r780927 - r780924;
        double r780929 = t;
        double r780930 = r780929 * r780926;
        double r780931 = r780930 - r780924;
        double r780932 = r780928 / r780931;
        double r780933 = r780924 + r780932;
        double r780934 = 1.0;
        double r780935 = r780924 + r780934;
        double r780936 = r780933 / r780935;
        return r780936;
}

double f(double x, double y, double z, double t) {
        double r780937 = x;
        double r780938 = -5.239754274123804e+75;
        bool r780939 = r780937 <= r780938;
        double r780940 = 1.0;
        double r780941 = r780937 + r780940;
        double r780942 = r780937 / r780941;
        double r780943 = 1.6767146492905612e-298;
        bool r780944 = r780937 <= r780943;
        double r780945 = y;
        double r780946 = z;
        double r780947 = -r780937;
        double r780948 = fma(r780945, r780946, r780947);
        double r780949 = t;
        double r780950 = fma(r780946, r780949, r780947);
        double r780951 = r780948 / r780950;
        double r780952 = r780951 + r780937;
        double r780953 = r780952 / r780941;
        double r780954 = 8.170967915147022e-257;
        bool r780955 = r780937 <= r780954;
        double r780956 = r780945 / r780949;
        double r780957 = r780937 + r780956;
        double r780958 = r780957 / r780941;
        double r780959 = 1.5358753841431232e+90;
        bool r780960 = r780937 <= r780959;
        double r780961 = r780960 ? r780953 : r780942;
        double r780962 = r780955 ? r780958 : r780961;
        double r780963 = r780944 ? r780953 : r780962;
        double r780964 = r780939 ? r780942 : r780963;
        return r780964;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Target

Original7.0
Target0.4
Herbie5.5
\[\frac{x + \left(\frac{y}{t - \frac{x}{z}} - \frac{x}{t \cdot z - x}\right)}{x + 1}\]

Derivation

  1. Split input into 3 regimes
  2. if x < -5.239754274123804e+75 or 1.5358753841431232e+90 < x

    1. Initial program 7.7

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

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

    if -5.239754274123804e+75 < x < 1.6767146492905612e-298 or 8.170967915147022e-257 < x < 1.5358753841431232e+90

    1. Initial program 6.4

      \[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity6.4

      \[\leadsto \frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{\color{blue}{1 \cdot \left(x + 1\right)}}\]
    4. Applied associate-/r*6.4

      \[\leadsto \color{blue}{\frac{\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{1}}{x + 1}}\]
    5. Simplified6.4

      \[\leadsto \frac{\color{blue}{\frac{\mathsf{fma}\left(y, z, -x\right)}{\mathsf{fma}\left(z, t, -x\right)} + x}}{x + 1}\]

    if 1.6767146492905612e-298 < x < 8.170967915147022e-257

    1. Initial program 10.7

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -5.2397542741238042 \cdot 10^{75}:\\ \;\;\;\;\frac{x}{x + 1}\\ \mathbf{elif}\;x \le 1.6767146492905612 \cdot 10^{-298}:\\ \;\;\;\;\frac{\frac{\mathsf{fma}\left(y, z, -x\right)}{\mathsf{fma}\left(z, t, -x\right)} + x}{x + 1}\\ \mathbf{elif}\;x \le 8.170967915147022 \cdot 10^{-257}:\\ \;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\ \mathbf{elif}\;x \le 1.5358753841431232 \cdot 10^{90}:\\ \;\;\;\;\frac{\frac{\mathsf{fma}\left(y, z, -x\right)}{\mathsf{fma}\left(z, t, -x\right)} + x}{x + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{x + 1}\\ \end{array}\]

Reproduce

herbie shell --seed 2020047 +o rules:numerics
(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)))