Average Error: 1.4 → 0.9
Time: 22.5s
Precision: 64
\[x + y \cdot \frac{z - t}{z - a}\]
\[\begin{array}{l} \mathbf{if}\;y \le -3.25947276335486826 \cdot 10^{87} \lor \neg \left(y \le 1.45139441661919718 \cdot 10^{-7}\right):\\ \;\;\;\;x + y \cdot \frac{-\left(z - t\right)}{-\left(z - a\right)}\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y \cdot \left(-\left(z - t\right)\right)}{-\left(z - a\right)}\\ \end{array}\]
x + y \cdot \frac{z - t}{z - a}
\begin{array}{l}
\mathbf{if}\;y \le -3.25947276335486826 \cdot 10^{87} \lor \neg \left(y \le 1.45139441661919718 \cdot 10^{-7}\right):\\
\;\;\;\;x + y \cdot \frac{-\left(z - t\right)}{-\left(z - a\right)}\\

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r418134 = x;
        double r418135 = y;
        double r418136 = z;
        double r418137 = t;
        double r418138 = r418136 - r418137;
        double r418139 = a;
        double r418140 = r418136 - r418139;
        double r418141 = r418138 / r418140;
        double r418142 = r418135 * r418141;
        double r418143 = r418134 + r418142;
        return r418143;
}

double f(double x, double y, double z, double t, double a) {
        double r418144 = y;
        double r418145 = -3.2594727633548683e+87;
        bool r418146 = r418144 <= r418145;
        double r418147 = 1.4513944166191972e-07;
        bool r418148 = r418144 <= r418147;
        double r418149 = !r418148;
        bool r418150 = r418146 || r418149;
        double r418151 = x;
        double r418152 = z;
        double r418153 = t;
        double r418154 = r418152 - r418153;
        double r418155 = -r418154;
        double r418156 = a;
        double r418157 = r418152 - r418156;
        double r418158 = -r418157;
        double r418159 = r418155 / r418158;
        double r418160 = r418144 * r418159;
        double r418161 = r418151 + r418160;
        double r418162 = r418144 * r418155;
        double r418163 = r418162 / r418158;
        double r418164 = r418151 + r418163;
        double r418165 = r418150 ? r418161 : r418164;
        return r418165;
}

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

Original1.4
Target1.2
Herbie0.9
\[x + \frac{y}{\frac{z - a}{z - t}}\]

Derivation

  1. Split input into 2 regimes
  2. if y < -3.2594727633548683e+87 or 1.4513944166191972e-07 < y

    1. Initial program 0.6

      \[x + y \cdot \frac{z - t}{z - a}\]
    2. Using strategy rm
    3. Applied frac-2neg0.6

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

    if -3.2594727633548683e+87 < y < 1.4513944166191972e-07

    1. Initial program 2.0

      \[x + y \cdot \frac{z - t}{z - a}\]
    2. Using strategy rm
    3. Applied frac-2neg2.0

      \[\leadsto x + y \cdot \color{blue}{\frac{-\left(z - t\right)}{-\left(z - a\right)}}\]
    4. Using strategy rm
    5. Applied associate-*r/1.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -3.25947276335486826 \cdot 10^{87} \lor \neg \left(y \le 1.45139441661919718 \cdot 10^{-7}\right):\\ \;\;\;\;x + y \cdot \frac{-\left(z - t\right)}{-\left(z - a\right)}\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y \cdot \left(-\left(z - t\right)\right)}{-\left(z - a\right)}\\ \end{array}\]

Reproduce

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

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

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