Average Error: 24.3 → 9.9
Time: 28.2s
Precision: 64
\[x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\]
\[\begin{array}{l} \mathbf{if}\;t \le -1.027661730382195228081271715965029345188 \cdot 10^{221}:\\ \;\;\;\;\mathsf{fma}\left(\frac{x}{t}, z, y\right) - y \cdot \frac{z}{t}\\ \mathbf{elif}\;t \le 8.607493713748229750335448676382364722526 \cdot 10^{142}:\\ \;\;\;\;\mathsf{fma}\left(\left(\frac{z}{a - t} - \frac{\frac{t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) + \mathsf{fma}\left(\frac{\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}}}{\sqrt[3]{a - t}}, \frac{-\frac{\sqrt[3]{t}}{\sqrt[3]{\sqrt[3]{a - t}}}}{\sqrt[3]{a - t}}, \frac{\frac{t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t} \cdot \left(\left(\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}\right) \cdot \sqrt[3]{\sqrt[3]{a - t}}\right)}\right), y - x, x\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{x}{t}, z, y\right) - y \cdot \frac{z}{t}\\ \end{array}\]
x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}
\begin{array}{l}
\mathbf{if}\;t \le -1.027661730382195228081271715965029345188 \cdot 10^{221}:\\
\;\;\;\;\mathsf{fma}\left(\frac{x}{t}, z, y\right) - y \cdot \frac{z}{t}\\

\mathbf{elif}\;t \le 8.607493713748229750335448676382364722526 \cdot 10^{142}:\\
\;\;\;\;\mathsf{fma}\left(\left(\frac{z}{a - t} - \frac{\frac{t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) + \mathsf{fma}\left(\frac{\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}}}{\sqrt[3]{a - t}}, \frac{-\frac{\sqrt[3]{t}}{\sqrt[3]{\sqrt[3]{a - t}}}}{\sqrt[3]{a - t}}, \frac{\frac{t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t} \cdot \left(\left(\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}\right) \cdot \sqrt[3]{\sqrt[3]{a - t}}\right)}\right), y - x, x\right)\\

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r26597948 = x;
        double r26597949 = y;
        double r26597950 = r26597949 - r26597948;
        double r26597951 = z;
        double r26597952 = t;
        double r26597953 = r26597951 - r26597952;
        double r26597954 = r26597950 * r26597953;
        double r26597955 = a;
        double r26597956 = r26597955 - r26597952;
        double r26597957 = r26597954 / r26597956;
        double r26597958 = r26597948 + r26597957;
        return r26597958;
}

double f(double x, double y, double z, double t, double a) {
        double r26597959 = t;
        double r26597960 = -1.0276617303821952e+221;
        bool r26597961 = r26597959 <= r26597960;
        double r26597962 = x;
        double r26597963 = r26597962 / r26597959;
        double r26597964 = z;
        double r26597965 = y;
        double r26597966 = fma(r26597963, r26597964, r26597965);
        double r26597967 = r26597964 / r26597959;
        double r26597968 = r26597965 * r26597967;
        double r26597969 = r26597966 - r26597968;
        double r26597970 = 8.60749371374823e+142;
        bool r26597971 = r26597959 <= r26597970;
        double r26597972 = a;
        double r26597973 = r26597972 - r26597959;
        double r26597974 = r26597964 / r26597973;
        double r26597975 = cbrt(r26597973);
        double r26597976 = r26597959 / r26597975;
        double r26597977 = r26597975 * r26597975;
        double r26597978 = r26597976 / r26597977;
        double r26597979 = r26597974 - r26597978;
        double r26597980 = cbrt(r26597959);
        double r26597981 = r26597980 * r26597980;
        double r26597982 = cbrt(r26597975);
        double r26597983 = r26597982 * r26597982;
        double r26597984 = r26597981 / r26597983;
        double r26597985 = r26597984 / r26597975;
        double r26597986 = r26597980 / r26597982;
        double r26597987 = -r26597986;
        double r26597988 = r26597987 / r26597975;
        double r26597989 = r26597983 * r26597982;
        double r26597990 = r26597975 * r26597989;
        double r26597991 = r26597976 / r26597990;
        double r26597992 = fma(r26597985, r26597988, r26597991);
        double r26597993 = r26597979 + r26597992;
        double r26597994 = r26597965 - r26597962;
        double r26597995 = fma(r26597993, r26597994, r26597962);
        double r26597996 = r26597971 ? r26597995 : r26597969;
        double r26597997 = r26597961 ? r26597969 : r26597996;
        return r26597997;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Target

Original24.3
Target9.5
Herbie9.9
\[\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 t < -1.0276617303821952e+221 or 8.60749371374823e+142 < t

    1. Initial program 48.6

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{z - t}{a - t}, y - x, x\right)}\]
    3. Taylor expanded around inf 24.7

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

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

    if -1.0276617303821952e+221 < t < 8.60749371374823e+142

    1. Initial program 16.6

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{z - t}{a - t}, y - x, x\right)}\]
    3. Using strategy rm
    4. Applied div-sub7.9

      \[\leadsto \mathsf{fma}\left(\color{blue}{\frac{z}{a - t} - \frac{t}{a - t}}, y - x, x\right)\]
    5. Using strategy rm
    6. Applied add-cube-cbrt8.1

      \[\leadsto \mathsf{fma}\left(\frac{z}{a - t} - \frac{t}{\color{blue}{\left(\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}\right) \cdot \sqrt[3]{a - t}}}, y - x, x\right)\]
    7. Applied *-un-lft-identity8.1

      \[\leadsto \mathsf{fma}\left(\frac{z}{a - t} - \frac{\color{blue}{1 \cdot t}}{\left(\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}\right) \cdot \sqrt[3]{a - t}}, y - x, x\right)\]
    8. Applied times-frac8.1

      \[\leadsto \mathsf{fma}\left(\frac{z}{a - t} - \color{blue}{\frac{1}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}} \cdot \frac{t}{\sqrt[3]{a - t}}}, y - x, x\right)\]
    9. Applied add-sqr-sqrt31.0

      \[\leadsto \mathsf{fma}\left(\color{blue}{\sqrt{\frac{z}{a - t}} \cdot \sqrt{\frac{z}{a - t}}} - \frac{1}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}} \cdot \frac{t}{\sqrt[3]{a - t}}, y - x, x\right)\]
    10. Applied prod-diff31.0

      \[\leadsto \mathsf{fma}\left(\color{blue}{\mathsf{fma}\left(\sqrt{\frac{z}{a - t}}, \sqrt{\frac{z}{a - t}}, -\frac{t}{\sqrt[3]{a - t}} \cdot \frac{1}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) + \mathsf{fma}\left(-\frac{t}{\sqrt[3]{a - t}}, \frac{1}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}, \frac{t}{\sqrt[3]{a - t}} \cdot \frac{1}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right)}, y - x, x\right)\]
    11. Simplified8.1

      \[\leadsto \mathsf{fma}\left(\color{blue}{\left(\frac{z}{a - t} - \frac{\frac{t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right)} + \mathsf{fma}\left(-\frac{t}{\sqrt[3]{a - t}}, \frac{1}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}, \frac{t}{\sqrt[3]{a - t}} \cdot \frac{1}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right), y - x, x\right)\]
    12. Simplified8.1

      \[\leadsto \mathsf{fma}\left(\left(\frac{z}{a - t} - \frac{\frac{t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) + \color{blue}{\left(\left(-\frac{\frac{t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) + \frac{\frac{t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right)}, y - x, x\right)\]
    13. Using strategy rm
    14. Applied add-cube-cbrt8.2

      \[\leadsto \mathsf{fma}\left(\left(\frac{z}{a - t} - \frac{\frac{t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) + \left(\left(-\frac{\frac{t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) + \frac{\frac{t}{\sqrt[3]{a - t}}}{\color{blue}{\left(\left(\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}\right) \cdot \sqrt[3]{\sqrt[3]{a - t}}\right)} \cdot \sqrt[3]{a - t}}\right), y - x, x\right)\]
    15. Using strategy rm
    16. Applied add-cube-cbrt8.1

      \[\leadsto \mathsf{fma}\left(\left(\frac{z}{a - t} - \frac{\frac{t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) + \left(\left(-\frac{\frac{t}{\color{blue}{\left(\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}\right) \cdot \sqrt[3]{\sqrt[3]{a - t}}}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) + \frac{\frac{t}{\sqrt[3]{a - t}}}{\left(\left(\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}\right) \cdot \sqrt[3]{\sqrt[3]{a - t}}\right) \cdot \sqrt[3]{a - t}}\right), y - x, x\right)\]
    17. Applied add-cube-cbrt8.0

      \[\leadsto \mathsf{fma}\left(\left(\frac{z}{a - t} - \frac{\frac{t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) + \left(\left(-\frac{\frac{\color{blue}{\left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right) \cdot \sqrt[3]{t}}}{\left(\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}\right) \cdot \sqrt[3]{\sqrt[3]{a - t}}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) + \frac{\frac{t}{\sqrt[3]{a - t}}}{\left(\left(\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}\right) \cdot \sqrt[3]{\sqrt[3]{a - t}}\right) \cdot \sqrt[3]{a - t}}\right), y - x, x\right)\]
    18. Applied times-frac8.0

      \[\leadsto \mathsf{fma}\left(\left(\frac{z}{a - t} - \frac{\frac{t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) + \left(\left(-\frac{\color{blue}{\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}} \cdot \frac{\sqrt[3]{t}}{\sqrt[3]{\sqrt[3]{a - t}}}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) + \frac{\frac{t}{\sqrt[3]{a - t}}}{\left(\left(\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}\right) \cdot \sqrt[3]{\sqrt[3]{a - t}}\right) \cdot \sqrt[3]{a - t}}\right), y - x, x\right)\]
    19. Applied times-frac8.0

      \[\leadsto \mathsf{fma}\left(\left(\frac{z}{a - t} - \frac{\frac{t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) + \left(\left(-\color{blue}{\frac{\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}}}{\sqrt[3]{a - t}} \cdot \frac{\frac{\sqrt[3]{t}}{\sqrt[3]{\sqrt[3]{a - t}}}}{\sqrt[3]{a - t}}}\right) + \frac{\frac{t}{\sqrt[3]{a - t}}}{\left(\left(\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}\right) \cdot \sqrt[3]{\sqrt[3]{a - t}}\right) \cdot \sqrt[3]{a - t}}\right), y - x, x\right)\]
    20. Applied distribute-rgt-neg-in8.0

      \[\leadsto \mathsf{fma}\left(\left(\frac{z}{a - t} - \frac{\frac{t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) + \left(\color{blue}{\frac{\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}}}{\sqrt[3]{a - t}} \cdot \left(-\frac{\frac{\sqrt[3]{t}}{\sqrt[3]{\sqrt[3]{a - t}}}}{\sqrt[3]{a - t}}\right)} + \frac{\frac{t}{\sqrt[3]{a - t}}}{\left(\left(\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}\right) \cdot \sqrt[3]{\sqrt[3]{a - t}}\right) \cdot \sqrt[3]{a - t}}\right), y - x, x\right)\]
    21. Applied fma-def8.0

      \[\leadsto \mathsf{fma}\left(\left(\frac{z}{a - t} - \frac{\frac{t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) + \color{blue}{\mathsf{fma}\left(\frac{\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}}}{\sqrt[3]{a - t}}, -\frac{\frac{\sqrt[3]{t}}{\sqrt[3]{\sqrt[3]{a - t}}}}{\sqrt[3]{a - t}}, \frac{\frac{t}{\sqrt[3]{a - t}}}{\left(\left(\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}\right) \cdot \sqrt[3]{\sqrt[3]{a - t}}\right) \cdot \sqrt[3]{a - t}}\right)}, y - x, x\right)\]
  3. Recombined 2 regimes into one program.
  4. Final simplification9.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -1.027661730382195228081271715965029345188 \cdot 10^{221}:\\ \;\;\;\;\mathsf{fma}\left(\frac{x}{t}, z, y\right) - y \cdot \frac{z}{t}\\ \mathbf{elif}\;t \le 8.607493713748229750335448676382364722526 \cdot 10^{142}:\\ \;\;\;\;\mathsf{fma}\left(\left(\frac{z}{a - t} - \frac{\frac{t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}\right) + \mathsf{fma}\left(\frac{\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}}}{\sqrt[3]{a - t}}, \frac{-\frac{\sqrt[3]{t}}{\sqrt[3]{\sqrt[3]{a - t}}}}{\sqrt[3]{a - t}}, \frac{\frac{t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t} \cdot \left(\left(\sqrt[3]{\sqrt[3]{a - t}} \cdot \sqrt[3]{\sqrt[3]{a - t}}\right) \cdot \sqrt[3]{\sqrt[3]{a - t}}\right)}\right), y - x, x\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{x}{t}, z, y\right) - y \cdot \frac{z}{t}\\ \end{array}\]

Reproduce

herbie shell --seed 2019192 +o rules:numerics
(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))))