Average Error: 10.7 → 0.3
Time: 20.4s
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:\\ \;\;\;\;x + \frac{y}{z - a} \cdot \left(z - t\right)\\ \mathbf{elif}\;\frac{\left(z - t\right) \cdot y}{z - a} \le 2.03069192252577092675394733133123423883 \cdot 10^{294}:\\ \;\;\;\;x + \frac{\left(z - t\right) \cdot y}{z - a}\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y}{z - a} \cdot \left(z - t\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:\\
\;\;\;\;x + \frac{y}{z - a} \cdot \left(z - t\right)\\

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

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r30021745 = x;
        double r30021746 = y;
        double r30021747 = z;
        double r30021748 = t;
        double r30021749 = r30021747 - r30021748;
        double r30021750 = r30021746 * r30021749;
        double r30021751 = a;
        double r30021752 = r30021747 - r30021751;
        double r30021753 = r30021750 / r30021752;
        double r30021754 = r30021745 + r30021753;
        return r30021754;
}

double f(double x, double y, double z, double t, double a) {
        double r30021755 = z;
        double r30021756 = t;
        double r30021757 = r30021755 - r30021756;
        double r30021758 = y;
        double r30021759 = r30021757 * r30021758;
        double r30021760 = a;
        double r30021761 = r30021755 - r30021760;
        double r30021762 = r30021759 / r30021761;
        double r30021763 = -inf.0;
        bool r30021764 = r30021762 <= r30021763;
        double r30021765 = x;
        double r30021766 = r30021758 / r30021761;
        double r30021767 = r30021766 * r30021757;
        double r30021768 = r30021765 + r30021767;
        double r30021769 = 2.030691922525771e+294;
        bool r30021770 = r30021762 <= r30021769;
        double r30021771 = r30021765 + r30021762;
        double r30021772 = r30021770 ? r30021771 : r30021768;
        double r30021773 = r30021764 ? r30021768 : r30021772;
        return r30021773;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

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

Derivation

  1. Split input into 2 regimes
  2. if (/ (* y (- z t)) (- z a)) < -inf.0 or 2.030691922525771e+294 < (/ (* y (- z t)) (- z a))

    1. Initial program 63.0

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

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

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

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

    1. Initial program 0.2

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

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

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

      \[\leadsto \left(z - t\right) \cdot \frac{y}{\color{blue}{\left(\sqrt[3]{z - a} \cdot \sqrt[3]{z - a}\right) \cdot \sqrt[3]{z - a}}} + x\]
    7. Applied *-un-lft-identity3.9

      \[\leadsto \left(z - t\right) \cdot \frac{\color{blue}{1 \cdot y}}{\left(\sqrt[3]{z - a} \cdot \sqrt[3]{z - a}\right) \cdot \sqrt[3]{z - a}} + x\]
    8. Applied times-frac3.9

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

      \[\leadsto \color{blue}{\left(\left(z - t\right) \cdot \frac{1}{\sqrt[3]{z - a} \cdot \sqrt[3]{z - a}}\right) \cdot \frac{y}{\sqrt[3]{z - a}}} + x\]
    10. Simplified1.8

      \[\leadsto \color{blue}{\frac{z - t}{\sqrt[3]{z - a} \cdot \sqrt[3]{z - a}}} \cdot \frac{y}{\sqrt[3]{z - a}} + x\]
    11. Using strategy rm
    12. Applied frac-times0.7

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

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

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

Reproduce

herbie shell --seed 2019170 +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))))