Average Error: 24.4 → 11.5
Time: 8.3s
Precision: 64
\[x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\]
\[\begin{array}{l} \mathbf{if}\;a \le \frac{-3896972974696937}{1.645504557321206042154969182557350504983 \cdot 10^{63}} \lor \neg \left(a \le \frac{7215309785800599}{2.644223875160994395807661232131084159314 \cdot 10^{123}}\right):\\ \;\;\;\;x + \frac{1}{\frac{\frac{a - t}{z - t}}{y - x}}\\ \mathbf{else}:\\ \;\;\;\;\left(y + \frac{x \cdot z}{t}\right) - \frac{z \cdot y}{t}\\ \end{array}\]
x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}
\begin{array}{l}
\mathbf{if}\;a \le \frac{-3896972974696937}{1.645504557321206042154969182557350504983 \cdot 10^{63}} \lor \neg \left(a \le \frac{7215309785800599}{2.644223875160994395807661232131084159314 \cdot 10^{123}}\right):\\
\;\;\;\;x + \frac{1}{\frac{\frac{a - t}{z - t}}{y - x}}\\

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r369233 = x;
        double r369234 = y;
        double r369235 = r369234 - r369233;
        double r369236 = z;
        double r369237 = t;
        double r369238 = r369236 - r369237;
        double r369239 = r369235 * r369238;
        double r369240 = a;
        double r369241 = r369240 - r369237;
        double r369242 = r369239 / r369241;
        double r369243 = r369233 + r369242;
        return r369243;
}

double f(double x, double y, double z, double t, double a) {
        double r369244 = a;
        double r369245 = -3896972974696937.0;
        double r369246 = 1.645504557321206e+63;
        double r369247 = r369245 / r369246;
        bool r369248 = r369244 <= r369247;
        double r369249 = 7215309785800599.0;
        double r369250 = 2.6442238751609944e+123;
        double r369251 = r369249 / r369250;
        bool r369252 = r369244 <= r369251;
        double r369253 = !r369252;
        bool r369254 = r369248 || r369253;
        double r369255 = x;
        double r369256 = 1.0;
        double r369257 = t;
        double r369258 = r369244 - r369257;
        double r369259 = z;
        double r369260 = r369259 - r369257;
        double r369261 = r369258 / r369260;
        double r369262 = y;
        double r369263 = r369262 - r369255;
        double r369264 = r369261 / r369263;
        double r369265 = r369256 / r369264;
        double r369266 = r369255 + r369265;
        double r369267 = r369255 * r369259;
        double r369268 = r369267 / r369257;
        double r369269 = r369262 + r369268;
        double r369270 = r369259 * r369262;
        double r369271 = r369270 / r369257;
        double r369272 = r369269 - r369271;
        double r369273 = r369254 ? r369266 : r369272;
        return r369273;
}

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

Original24.4
Target9.3
Herbie11.5
\[\begin{array}{l} \mathbf{if}\;a \lt -1.615306284544257464183904494091872805513 \cdot 10^{-142}:\\ \;\;\;\;x + \frac{y - x}{1} \cdot \frac{z - t}{a - t}\\ \mathbf{elif}\;a \lt 3.774403170083174201868024161554637965035 \cdot 10^{-182}:\\ \;\;\;\;y - \frac{z}{t} \cdot \left(y - x\right)\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y - x}{1} \cdot \frac{z - t}{a - t}\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if a < -2.3682541366163105e-48

    1. Initial program 22.4

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

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

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

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

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

    if -2.3682541366163105e-48 < a < 2.7287060878539615e-108

    1. Initial program 28.4

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

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

    if 2.7287060878539615e-108 < a

    1. Initial program 22.5

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

      \[\leadsto x + \color{blue}{\frac{y - x}{\frac{a - t}{z - t}}}\]
    4. Using strategy rm
    5. Applied clear-num8.6

      \[\leadsto x + \color{blue}{\frac{1}{\frac{\frac{a - t}{z - t}}{y - x}}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification11.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \le \frac{-3896972974696937}{1.645504557321206042154969182557350504983 \cdot 10^{63}} \lor \neg \left(a \le \frac{7215309785800599}{2.644223875160994395807661232131084159314 \cdot 10^{123}}\right):\\ \;\;\;\;x + \frac{1}{\frac{\frac{a - t}{z - t}}{y - x}}\\ \mathbf{else}:\\ \;\;\;\;\left(y + \frac{x \cdot z}{t}\right) - \frac{z \cdot y}{t}\\ \end{array}\]

Reproduce

herbie shell --seed 2019304 
(FPCore (x y z t a)
  :name "Graphics.Rendering.Chart.Axis.Types:linMap from Chart-1.5.3"
  :precision binary64

  :herbie-target
  (if (< a -1.6153062845442575e-142) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t)))) (if (< a 3.7744031700831742e-182) (- y (* (/ z t) (- y x))) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t))))))

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