Average Error: 24.9 → 11.4
Time: 5.1s
Precision: 64
\[x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\]
\[\begin{array}{l} \mathbf{if}\;a \le -4.8101418718325989 \cdot 10^{-48} \lor \neg \left(a \le 1.72111488913343407 \cdot 10^{-177}\right):\\ \;\;\;\;x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\ \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 -4.8101418718325989 \cdot 10^{-48} \lor \neg \left(a \le 1.72111488913343407 \cdot 10^{-177}\right):\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\

\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 r650468 = x;
        double r650469 = y;
        double r650470 = r650469 - r650468;
        double r650471 = z;
        double r650472 = t;
        double r650473 = r650471 - r650472;
        double r650474 = r650470 * r650473;
        double r650475 = a;
        double r650476 = r650475 - r650472;
        double r650477 = r650474 / r650476;
        double r650478 = r650468 + r650477;
        return r650478;
}

double f(double x, double y, double z, double t, double a) {
        double r650479 = a;
        double r650480 = -4.810141871832599e-48;
        bool r650481 = r650479 <= r650480;
        double r650482 = 1.721114889133434e-177;
        bool r650483 = r650479 <= r650482;
        double r650484 = !r650483;
        bool r650485 = r650481 || r650484;
        double r650486 = x;
        double r650487 = y;
        double r650488 = r650487 - r650486;
        double r650489 = z;
        double r650490 = t;
        double r650491 = r650489 - r650490;
        double r650492 = r650479 - r650490;
        double r650493 = r650491 / r650492;
        double r650494 = r650488 * r650493;
        double r650495 = r650486 + r650494;
        double r650496 = r650486 * r650489;
        double r650497 = r650496 / r650490;
        double r650498 = r650487 + r650497;
        double r650499 = r650489 * r650487;
        double r650500 = r650499 / r650490;
        double r650501 = r650498 - r650500;
        double r650502 = r650485 ? r650495 : r650501;
        return r650502;
}

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.9
Target9.3
Herbie11.4
\[\begin{array}{l} \mathbf{if}\;a \lt -1.6153062845442575 \cdot 10^{-142}:\\ \;\;\;\;x + \frac{y - x}{1} \cdot \frac{z - t}{a - t}\\ \mathbf{elif}\;a \lt 3.7744031700831742 \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 < -4.810141871832599e-48 or 1.721114889133434e-177 < a

    1. Initial program 23.0

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

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

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

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

    if -4.810141871832599e-48 < a < 1.721114889133434e-177

    1. Initial program 29.4

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

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

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

Reproduce

herbie shell --seed 2020036 
(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.774403170083174e-182) (- y (* (/ z t) (- y x))) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t))))))

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