Average Error: 10.9 → 1.5
Time: 3.1s
Precision: 64
\[x + \frac{y \cdot \left(z - t\right)}{a - t}\]
\[\begin{array}{l} \mathbf{if}\;t \le -1.03708978223895714 \cdot 10^{-271} \lor \neg \left(t \le 8.49657610056407139 \cdot 10^{-71}\right):\\ \;\;\;\;x + y \cdot \left(z \cdot \frac{1}{a - t} - \frac{t}{a - t}\right)\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y \cdot z + y \cdot \left(-t\right)}{a - t}\\ \end{array}\]
x + \frac{y \cdot \left(z - t\right)}{a - t}
\begin{array}{l}
\mathbf{if}\;t \le -1.03708978223895714 \cdot 10^{-271} \lor \neg \left(t \le 8.49657610056407139 \cdot 10^{-71}\right):\\
\;\;\;\;x + y \cdot \left(z \cdot \frac{1}{a - t} - \frac{t}{a - t}\right)\\

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r768024 = x;
        double r768025 = y;
        double r768026 = z;
        double r768027 = t;
        double r768028 = r768026 - r768027;
        double r768029 = r768025 * r768028;
        double r768030 = a;
        double r768031 = r768030 - r768027;
        double r768032 = r768029 / r768031;
        double r768033 = r768024 + r768032;
        return r768033;
}

double f(double x, double y, double z, double t, double a) {
        double r768034 = t;
        double r768035 = -1.0370897822389571e-271;
        bool r768036 = r768034 <= r768035;
        double r768037 = 8.496576100564071e-71;
        bool r768038 = r768034 <= r768037;
        double r768039 = !r768038;
        bool r768040 = r768036 || r768039;
        double r768041 = x;
        double r768042 = y;
        double r768043 = z;
        double r768044 = 1.0;
        double r768045 = a;
        double r768046 = r768045 - r768034;
        double r768047 = r768044 / r768046;
        double r768048 = r768043 * r768047;
        double r768049 = r768034 / r768046;
        double r768050 = r768048 - r768049;
        double r768051 = r768042 * r768050;
        double r768052 = r768041 + r768051;
        double r768053 = r768042 * r768043;
        double r768054 = -r768034;
        double r768055 = r768042 * r768054;
        double r768056 = r768053 + r768055;
        double r768057 = r768056 / r768046;
        double r768058 = r768041 + r768057;
        double r768059 = r768040 ? r768052 : r768058;
        return r768059;
}

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.9
Target1.3
Herbie1.5
\[x + \frac{y}{\frac{a - t}{z - t}}\]

Derivation

  1. Split input into 2 regimes
  2. if t < -1.0370897822389571e-271 or 8.496576100564071e-71 < t

    1. Initial program 12.7

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

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

      \[\leadsto x + \color{blue}{\frac{y}{1} \cdot \frac{z - t}{a - t}}\]
    5. Simplified0.9

      \[\leadsto x + \color{blue}{y} \cdot \frac{z - t}{a - t}\]
    6. Using strategy rm
    7. Applied div-sub0.8

      \[\leadsto x + y \cdot \color{blue}{\left(\frac{z}{a - t} - \frac{t}{a - t}\right)}\]
    8. Using strategy rm
    9. Applied div-inv0.9

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

    if -1.0370897822389571e-271 < t < 8.496576100564071e-71

    1. Initial program 3.8

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -1.03708978223895714 \cdot 10^{-271} \lor \neg \left(t \le 8.49657610056407139 \cdot 10^{-71}\right):\\ \;\;\;\;x + y \cdot \left(z \cdot \frac{1}{a - t} - \frac{t}{a - t}\right)\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y \cdot z + y \cdot \left(-t\right)}{a - t}\\ \end{array}\]

Reproduce

herbie shell --seed 2020056 
(FPCore (x y z t a)
  :name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, B"
  :precision binary64

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

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