Average Error: 24.8 → 10.5
Time: 20.0s
Precision: 64
\[x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\]
\[\begin{array}{l} \mathbf{if}\;a \le -1.348935976238446135447285261817671628371 \cdot 10^{-173} \lor \neg \left(a \le 4.854445287131612754701281659543646156092 \cdot 10^{-114}\right):\\ \;\;\;\;x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\ \mathbf{else}:\\ \;\;\;\;\frac{x \cdot z}{t} + \left(y - \frac{z \cdot y}{t}\right)\\ \end{array}\]
x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}
\begin{array}{l}
\mathbf{if}\;a \le -1.348935976238446135447285261817671628371 \cdot 10^{-173} \lor \neg \left(a \le 4.854445287131612754701281659543646156092 \cdot 10^{-114}\right):\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r532476 = x;
        double r532477 = y;
        double r532478 = r532477 - r532476;
        double r532479 = z;
        double r532480 = t;
        double r532481 = r532479 - r532480;
        double r532482 = r532478 * r532481;
        double r532483 = a;
        double r532484 = r532483 - r532480;
        double r532485 = r532482 / r532484;
        double r532486 = r532476 + r532485;
        return r532486;
}

double f(double x, double y, double z, double t, double a) {
        double r532487 = a;
        double r532488 = -1.3489359762384461e-173;
        bool r532489 = r532487 <= r532488;
        double r532490 = 4.854445287131613e-114;
        bool r532491 = r532487 <= r532490;
        double r532492 = !r532491;
        bool r532493 = r532489 || r532492;
        double r532494 = x;
        double r532495 = y;
        double r532496 = r532495 - r532494;
        double r532497 = z;
        double r532498 = t;
        double r532499 = r532497 - r532498;
        double r532500 = r532487 - r532498;
        double r532501 = r532499 / r532500;
        double r532502 = r532496 * r532501;
        double r532503 = r532494 + r532502;
        double r532504 = r532494 * r532497;
        double r532505 = r532504 / r532498;
        double r532506 = r532497 * r532495;
        double r532507 = r532506 / r532498;
        double r532508 = r532495 - r532507;
        double r532509 = r532505 + r532508;
        double r532510 = r532493 ? r532503 : r532509;
        return r532510;
}

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.8
Target9.3
Herbie10.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 2 regimes
  2. if a < -1.3489359762384461e-173 or 4.854445287131613e-114 < a

    1. Initial program 23.2

      \[x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\]
    2. Simplified11.9

      \[\leadsto \color{blue}{x + \frac{y - x}{a - t} \cdot \left(z - t\right)}\]
    3. Using strategy rm
    4. Applied div-inv12.0

      \[\leadsto x + \color{blue}{\left(\left(y - x\right) \cdot \frac{1}{a - t}\right)} \cdot \left(z - t\right)\]
    5. Applied associate-*l*9.3

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

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

    if -1.3489359762384461e-173 < a < 4.854445287131613e-114

    1. Initial program 29.7

      \[x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\]
    2. Simplified25.7

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

      \[\leadsto x + \color{blue}{\left(\left(y - x\right) \cdot \frac{1}{a - t}\right)} \cdot \left(z - t\right)\]
    5. Applied associate-*l*20.2

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

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

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

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

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

Reproduce

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

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

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