Average Error: 11.9 → 2.2
Time: 10.2s
Precision: 64
\[\frac{x \cdot \left(y - z\right)}{t - z}\]
\[\begin{array}{l} \mathbf{if}\;z \le -5.832238401212370880087950472681264095707 \cdot 10^{-71}:\\ \;\;\;\;\frac{y - z}{t - z} \cdot x\\ \mathbf{elif}\;z \le 1.007416324504119360658702594253396750138 \cdot 10^{-308}:\\ \;\;\;\;\frac{z \cdot \left(-x\right) + x \cdot y}{t - z}\\ \mathbf{else}:\\ \;\;\;\;\frac{y - z}{t - z} \cdot x\\ \end{array}\]
\frac{x \cdot \left(y - z\right)}{t - z}
\begin{array}{l}
\mathbf{if}\;z \le -5.832238401212370880087950472681264095707 \cdot 10^{-71}:\\
\;\;\;\;\frac{y - z}{t - z} \cdot x\\

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

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

\end{array}
double f(double x, double y, double z, double t) {
        double r28761867 = x;
        double r28761868 = y;
        double r28761869 = z;
        double r28761870 = r28761868 - r28761869;
        double r28761871 = r28761867 * r28761870;
        double r28761872 = t;
        double r28761873 = r28761872 - r28761869;
        double r28761874 = r28761871 / r28761873;
        return r28761874;
}

double f(double x, double y, double z, double t) {
        double r28761875 = z;
        double r28761876 = -5.832238401212371e-71;
        bool r28761877 = r28761875 <= r28761876;
        double r28761878 = y;
        double r28761879 = r28761878 - r28761875;
        double r28761880 = t;
        double r28761881 = r28761880 - r28761875;
        double r28761882 = r28761879 / r28761881;
        double r28761883 = x;
        double r28761884 = r28761882 * r28761883;
        double r28761885 = 1.0074163245041194e-308;
        bool r28761886 = r28761875 <= r28761885;
        double r28761887 = -r28761883;
        double r28761888 = r28761875 * r28761887;
        double r28761889 = r28761883 * r28761878;
        double r28761890 = r28761888 + r28761889;
        double r28761891 = r28761890 / r28761881;
        double r28761892 = r28761886 ? r28761891 : r28761884;
        double r28761893 = r28761877 ? r28761884 : r28761892;
        return r28761893;
}

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

Original11.9
Target2.0
Herbie2.2
\[\frac{x}{\frac{t - z}{y - z}}\]

Derivation

  1. Split input into 2 regimes
  2. if z < -5.832238401212371e-71 or 1.0074163245041194e-308 < z

    1. Initial program 13.2

      \[\frac{x \cdot \left(y - z\right)}{t - z}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity13.2

      \[\leadsto \frac{x \cdot \left(y - z\right)}{\color{blue}{1 \cdot \left(t - z\right)}}\]
    4. Applied times-frac1.5

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

      \[\leadsto \color{blue}{x} \cdot \frac{y - z}{t - z}\]

    if -5.832238401212371e-71 < z < 1.0074163245041194e-308

    1. Initial program 5.8

      \[\frac{x \cdot \left(y - z\right)}{t - z}\]
    2. Using strategy rm
    3. Applied sub-neg5.8

      \[\leadsto \frac{x \cdot \color{blue}{\left(y + \left(-z\right)\right)}}{t - z}\]
    4. Applied distribute-rgt-in5.8

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -5.832238401212370880087950472681264095707 \cdot 10^{-71}:\\ \;\;\;\;\frac{y - z}{t - z} \cdot x\\ \mathbf{elif}\;z \le 1.007416324504119360658702594253396750138 \cdot 10^{-308}:\\ \;\;\;\;\frac{z \cdot \left(-x\right) + x \cdot y}{t - z}\\ \mathbf{else}:\\ \;\;\;\;\frac{y - z}{t - z} \cdot x\\ \end{array}\]

Reproduce

herbie shell --seed 2019192 
(FPCore (x y z t)
  :name "Graphics.Rendering.Chart.Plot.AreaSpots:renderAreaSpots4D from Chart-1.5.3"

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

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