Average Error: 24.6 → 10.1
Time: 7.8s
Precision: 64
\[x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\]
\[\begin{array}{l} \mathbf{if}\;a \le -3.4945496151903939 \cdot 10^{-151} \lor \neg \left(a \le 5.59941823364136278 \cdot 10^{-170}\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 -3.4945496151903939 \cdot 10^{-151} \lor \neg \left(a \le 5.59941823364136278 \cdot 10^{-170}\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 r689847 = x;
        double r689848 = y;
        double r689849 = r689848 - r689847;
        double r689850 = z;
        double r689851 = t;
        double r689852 = r689850 - r689851;
        double r689853 = r689849 * r689852;
        double r689854 = a;
        double r689855 = r689854 - r689851;
        double r689856 = r689853 / r689855;
        double r689857 = r689847 + r689856;
        return r689857;
}

double f(double x, double y, double z, double t, double a) {
        double r689858 = a;
        double r689859 = -3.494549615190394e-151;
        bool r689860 = r689858 <= r689859;
        double r689861 = 5.599418233641363e-170;
        bool r689862 = r689858 <= r689861;
        double r689863 = !r689862;
        bool r689864 = r689860 || r689863;
        double r689865 = x;
        double r689866 = y;
        double r689867 = r689866 - r689865;
        double r689868 = z;
        double r689869 = t;
        double r689870 = r689868 - r689869;
        double r689871 = r689858 - r689869;
        double r689872 = r689870 / r689871;
        double r689873 = r689867 * r689872;
        double r689874 = r689865 + r689873;
        double r689875 = r689865 * r689868;
        double r689876 = r689875 / r689869;
        double r689877 = r689866 + r689876;
        double r689878 = r689868 * r689866;
        double r689879 = r689878 / r689869;
        double r689880 = r689877 - r689879;
        double r689881 = r689864 ? r689874 : r689880;
        return r689881;
}

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.6
Target9.1
Herbie10.1
\[\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 < -3.494549615190394e-151 or 5.599418233641363e-170 < a

    1. Initial program 23.2

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

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

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

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

    if -3.494549615190394e-151 < a < 5.599418233641363e-170

    1. Initial program 29.7

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

      \[\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 simplification10.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \le -3.4945496151903939 \cdot 10^{-151} \lor \neg \left(a \le 5.59941823364136278 \cdot 10^{-170}\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 2020027 
(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))))