Average Error: 16.0 → 6.0
Time: 4.6s
Precision: 64
\[\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\]
\[\begin{array}{l} \mathbf{if}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} = -\infty:\\ \;\;\;\;x + y \cdot \left(1 - \left(z - t\right) \cdot \frac{1}{a - t}\right)\\ \mathbf{elif}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} \le -2.4108208486070365 \cdot 10^{-243}:\\ \;\;\;\;x + \left(y - \frac{1}{a - t} \cdot \left(\left(z - t\right) \cdot y\right)\right)\\ \mathbf{elif}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} \le 0.0:\\ \;\;\;\;x + y \cdot \frac{z}{t}\\ \mathbf{else}:\\ \;\;\;\;x + y \cdot \left(1 - \left(z - t\right) \cdot \frac{1}{a - t}\right)\\ \end{array}\]
\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}
\begin{array}{l}
\mathbf{if}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} = -\infty:\\
\;\;\;\;x + y \cdot \left(1 - \left(z - t\right) \cdot \frac{1}{a - t}\right)\\

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

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

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r649191 = x;
        double r649192 = y;
        double r649193 = r649191 + r649192;
        double r649194 = z;
        double r649195 = t;
        double r649196 = r649194 - r649195;
        double r649197 = r649196 * r649192;
        double r649198 = a;
        double r649199 = r649198 - r649195;
        double r649200 = r649197 / r649199;
        double r649201 = r649193 - r649200;
        return r649201;
}

double f(double x, double y, double z, double t, double a) {
        double r649202 = x;
        double r649203 = y;
        double r649204 = r649202 + r649203;
        double r649205 = z;
        double r649206 = t;
        double r649207 = r649205 - r649206;
        double r649208 = r649207 * r649203;
        double r649209 = a;
        double r649210 = r649209 - r649206;
        double r649211 = r649208 / r649210;
        double r649212 = r649204 - r649211;
        double r649213 = -inf.0;
        bool r649214 = r649212 <= r649213;
        double r649215 = 1.0;
        double r649216 = r649215 / r649210;
        double r649217 = r649207 * r649216;
        double r649218 = r649215 - r649217;
        double r649219 = r649203 * r649218;
        double r649220 = r649202 + r649219;
        double r649221 = -2.4108208486070365e-243;
        bool r649222 = r649212 <= r649221;
        double r649223 = r649216 * r649208;
        double r649224 = r649203 - r649223;
        double r649225 = r649202 + r649224;
        double r649226 = 0.0;
        bool r649227 = r649212 <= r649226;
        double r649228 = r649205 / r649206;
        double r649229 = r649203 * r649228;
        double r649230 = r649202 + r649229;
        double r649231 = r649227 ? r649230 : r649220;
        double r649232 = r649222 ? r649225 : r649231;
        double r649233 = r649214 ? r649220 : r649232;
        return r649233;
}

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

Original16.0
Target8.3
Herbie6.0
\[\begin{array}{l} \mathbf{if}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} \lt -1.3664970889390727 \cdot 10^{-7}:\\ \;\;\;\;\left(y + x\right) - \left(\left(z - t\right) \cdot \frac{1}{a - t}\right) \cdot y\\ \mathbf{elif}\;\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t} \lt 1.47542934445772333 \cdot 10^{-239}:\\ \;\;\;\;\frac{y \cdot \left(a - z\right) - x \cdot t}{a - t}\\ \mathbf{else}:\\ \;\;\;\;\left(y + x\right) - \left(\left(z - t\right) \cdot \frac{1}{a - t}\right) \cdot y\\ \end{array}\]

Derivation

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

    1. Initial program 20.2

      \[\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\]
    2. Using strategy rm
    3. Applied associate-/l*10.7

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

      \[\leadsto \color{blue}{x + \left(y - \frac{z - t}{\frac{a - t}{y}}\right)}\]
    6. Using strategy rm
    7. Applied associate-/r/7.2

      \[\leadsto x + \left(y - \color{blue}{\frac{z - t}{a - t} \cdot y}\right)\]
    8. Applied *-un-lft-identity7.2

      \[\leadsto x + \left(\color{blue}{1 \cdot y} - \frac{z - t}{a - t} \cdot y\right)\]
    9. Applied distribute-rgt-out--7.2

      \[\leadsto x + \color{blue}{y \cdot \left(1 - \frac{z - t}{a - t}\right)}\]
    10. Using strategy rm
    11. Applied div-inv7.7

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

    if -inf.0 < (- (+ x y) (/ (* (- z t) y) (- a t))) < -2.4108208486070365e-243

    1. Initial program 1.2

      \[\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\]
    2. Using strategy rm
    3. Applied associate-/l*3.0

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

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

      \[\leadsto x + \left(y - \frac{z - t}{\color{blue}{\left(a - t\right) \cdot \frac{1}{y}}}\right)\]
    8. Applied *-un-lft-identity2.9

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

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

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

    if -2.4108208486070365e-243 < (- (+ x y) (/ (* (- z t) y) (- a t))) < 0.0

    1. Initial program 58.5

      \[\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\]
    2. Using strategy rm
    3. Applied associate-/l*58.9

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

      \[\leadsto \color{blue}{x + \left(y - \frac{z - t}{\frac{a - t}{y}}\right)}\]
    6. Using strategy rm
    7. Applied associate-/r/32.8

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

      \[\leadsto x + \left(\color{blue}{1 \cdot y} - \frac{z - t}{a - t} \cdot y\right)\]
    9. Applied distribute-rgt-out--32.8

      \[\leadsto x + \color{blue}{y \cdot \left(1 - \frac{z - t}{a - t}\right)}\]
    10. Taylor expanded around inf 18.2

      \[\leadsto x + y \cdot \color{blue}{\frac{z}{t}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification6.0

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

Reproduce

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

  :herbie-target
  (if (< (- (+ x y) (/ (* (- z t) y) (- a t))) -1.3664970889390727e-07) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y)) (if (< (- (+ x y) (/ (* (- z t) y) (- a t))) 1.4754293444577233e-239) (/ (- (* y (- a z)) (* x t)) (- a t)) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y))))

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