Average Error: 10.9 → 0.6
Time: 24.1s
Precision: 64
\[x + \frac{y \cdot \left(z - t\right)}{z - a}\]
\[\begin{array}{l} \mathbf{if}\;\frac{\left(z - t\right) \cdot y}{z - a} = -\infty:\\ \;\;\;\;\left(z + a\right) \cdot \left(\frac{z - t}{z + a} \cdot \frac{y}{z - a}\right) + x\\ \mathbf{elif}\;\frac{\left(z - t\right) \cdot y}{z - a} \le 1.032427938808143638099175168164648641698 \cdot 10^{193}:\\ \;\;\;\;x + \frac{\left(z - t\right) \cdot y}{z - a}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(z - t, \frac{1}{z - a} \cdot y, x\right)\\ \end{array}\]
x + \frac{y \cdot \left(z - t\right)}{z - a}
\begin{array}{l}
\mathbf{if}\;\frac{\left(z - t\right) \cdot y}{z - a} = -\infty:\\
\;\;\;\;\left(z + a\right) \cdot \left(\frac{z - t}{z + a} \cdot \frac{y}{z - a}\right) + x\\

\mathbf{elif}\;\frac{\left(z - t\right) \cdot y}{z - a} \le 1.032427938808143638099175168164648641698 \cdot 10^{193}:\\
\;\;\;\;x + \frac{\left(z - t\right) \cdot y}{z - a}\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(z - t, \frac{1}{z - a} \cdot y, x\right)\\

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r29375968 = x;
        double r29375969 = y;
        double r29375970 = z;
        double r29375971 = t;
        double r29375972 = r29375970 - r29375971;
        double r29375973 = r29375969 * r29375972;
        double r29375974 = a;
        double r29375975 = r29375970 - r29375974;
        double r29375976 = r29375973 / r29375975;
        double r29375977 = r29375968 + r29375976;
        return r29375977;
}

double f(double x, double y, double z, double t, double a) {
        double r29375978 = z;
        double r29375979 = t;
        double r29375980 = r29375978 - r29375979;
        double r29375981 = y;
        double r29375982 = r29375980 * r29375981;
        double r29375983 = a;
        double r29375984 = r29375978 - r29375983;
        double r29375985 = r29375982 / r29375984;
        double r29375986 = -inf.0;
        bool r29375987 = r29375985 <= r29375986;
        double r29375988 = r29375978 + r29375983;
        double r29375989 = r29375980 / r29375988;
        double r29375990 = r29375981 / r29375984;
        double r29375991 = r29375989 * r29375990;
        double r29375992 = r29375988 * r29375991;
        double r29375993 = x;
        double r29375994 = r29375992 + r29375993;
        double r29375995 = 1.0324279388081436e+193;
        bool r29375996 = r29375985 <= r29375995;
        double r29375997 = r29375993 + r29375985;
        double r29375998 = 1.0;
        double r29375999 = r29375998 / r29375984;
        double r29376000 = r29375999 * r29375981;
        double r29376001 = fma(r29375980, r29376000, r29375993);
        double r29376002 = r29375996 ? r29375997 : r29376001;
        double r29376003 = r29375987 ? r29375994 : r29376002;
        return r29376003;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Target

Original10.9
Target1.3
Herbie0.6
\[x + \frac{y}{\frac{z - a}{z - t}}\]

Derivation

  1. Split input into 3 regimes
  2. if (/ (* y (- z t)) (- z a)) < -inf.0

    1. Initial program 64.0

      \[x + \frac{y \cdot \left(z - t\right)}{z - a}\]
    2. Simplified0.1

      \[\leadsto \color{blue}{\mathsf{fma}\left(z - t, \frac{y}{z - a}, x\right)}\]
    3. Using strategy rm
    4. Applied fma-udef0.1

      \[\leadsto \color{blue}{\left(z - t\right) \cdot \frac{y}{z - a} + x}\]
    5. Using strategy rm
    6. Applied flip--42.2

      \[\leadsto \left(z - t\right) \cdot \frac{y}{\color{blue}{\frac{z \cdot z - a \cdot a}{z + a}}} + x\]
    7. Applied associate-/r/42.2

      \[\leadsto \left(z - t\right) \cdot \color{blue}{\left(\frac{y}{z \cdot z - a \cdot a} \cdot \left(z + a\right)\right)} + x\]
    8. Applied associate-*r*42.3

      \[\leadsto \color{blue}{\left(\left(z - t\right) \cdot \frac{y}{z \cdot z - a \cdot a}\right) \cdot \left(z + a\right)} + x\]
    9. Simplified0.2

      \[\leadsto \color{blue}{\left(\frac{y}{z - a} \cdot \frac{z - t}{z + a}\right)} \cdot \left(z + a\right) + x\]

    if -inf.0 < (/ (* y (- z t)) (- z a)) < 1.0324279388081436e+193

    1. Initial program 0.2

      \[x + \frac{y \cdot \left(z - t\right)}{z - a}\]
    2. Simplified3.3

      \[\leadsto \color{blue}{\mathsf{fma}\left(z - t, \frac{y}{z - a}, x\right)}\]
    3. Using strategy rm
    4. Applied fma-udef3.3

      \[\leadsto \color{blue}{\left(z - t\right) \cdot \frac{y}{z - a} + x}\]
    5. Using strategy rm
    6. Applied add-cube-cbrt3.7

      \[\leadsto \color{blue}{\left(\left(\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}\right) \cdot \sqrt[3]{z - t}\right)} \cdot \frac{y}{z - a} + x\]
    7. Applied associate-*l*3.7

      \[\leadsto \color{blue}{\left(\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}\right) \cdot \left(\sqrt[3]{z - t} \cdot \frac{y}{z - a}\right)} + x\]
    8. Using strategy rm
    9. Applied associate-*r/2.1

      \[\leadsto \left(\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}\right) \cdot \color{blue}{\frac{\sqrt[3]{z - t} \cdot y}{z - a}} + x\]
    10. Applied associate-*r/0.7

      \[\leadsto \color{blue}{\frac{\left(\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}\right) \cdot \left(\sqrt[3]{z - t} \cdot y\right)}{z - a}} + x\]
    11. Simplified0.2

      \[\leadsto \frac{\color{blue}{y \cdot \left(z - t\right)}}{z - a} + x\]

    if 1.0324279388081436e+193 < (/ (* y (- z t)) (- z a))

    1. Initial program 48.2

      \[x + \frac{y \cdot \left(z - t\right)}{z - a}\]
    2. Simplified3.0

      \[\leadsto \color{blue}{\mathsf{fma}\left(z - t, \frac{y}{z - a}, x\right)}\]
    3. Using strategy rm
    4. Applied div-inv3.1

      \[\leadsto \mathsf{fma}\left(z - t, \color{blue}{y \cdot \frac{1}{z - a}}, x\right)\]
  3. Recombined 3 regimes into one program.
  4. Final simplification0.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{\left(z - t\right) \cdot y}{z - a} = -\infty:\\ \;\;\;\;\left(z + a\right) \cdot \left(\frac{z - t}{z + a} \cdot \frac{y}{z - a}\right) + x\\ \mathbf{elif}\;\frac{\left(z - t\right) \cdot y}{z - a} \le 1.032427938808143638099175168164648641698 \cdot 10^{193}:\\ \;\;\;\;x + \frac{\left(z - t\right) \cdot y}{z - a}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(z - t, \frac{1}{z - a} \cdot y, x\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019169 +o rules:numerics
(FPCore (x y z t a)
  :name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, A"

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

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