Average Error: 15.1 → 12.8
Time: 5.9s
Precision: 64
\[x + \left(y - z\right) \cdot \frac{t - x}{a - z}\]
\[\begin{array}{l} \mathbf{if}\;a \le -1.796564897818171461838241121240225506082 \cdot 10^{-276} \lor \neg \left(a \le 24670226099090405448076544256884334395390\right):\\ \;\;\;\;\left(\left(y - z\right) \cdot \frac{\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}\right) \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{a - z}} + x\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(y, \frac{x}{z} - \frac{t}{z}, t\right)\\ \end{array}\]
x + \left(y - z\right) \cdot \frac{t - x}{a - z}
\begin{array}{l}
\mathbf{if}\;a \le -1.796564897818171461838241121240225506082 \cdot 10^{-276} \lor \neg \left(a \le 24670226099090405448076544256884334395390\right):\\
\;\;\;\;\left(\left(y - z\right) \cdot \frac{\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}\right) \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{a - z}} + x\\

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r98892 = x;
        double r98893 = y;
        double r98894 = z;
        double r98895 = r98893 - r98894;
        double r98896 = t;
        double r98897 = r98896 - r98892;
        double r98898 = a;
        double r98899 = r98898 - r98894;
        double r98900 = r98897 / r98899;
        double r98901 = r98895 * r98900;
        double r98902 = r98892 + r98901;
        return r98902;
}

double f(double x, double y, double z, double t, double a) {
        double r98903 = a;
        double r98904 = -1.7965648978181715e-276;
        bool r98905 = r98903 <= r98904;
        double r98906 = 2.4670226099090405e+40;
        bool r98907 = r98903 <= r98906;
        double r98908 = !r98907;
        bool r98909 = r98905 || r98908;
        double r98910 = y;
        double r98911 = z;
        double r98912 = r98910 - r98911;
        double r98913 = t;
        double r98914 = x;
        double r98915 = r98913 - r98914;
        double r98916 = cbrt(r98915);
        double r98917 = r98916 * r98916;
        double r98918 = r98903 - r98911;
        double r98919 = cbrt(r98918);
        double r98920 = r98919 * r98919;
        double r98921 = r98917 / r98920;
        double r98922 = r98912 * r98921;
        double r98923 = r98916 / r98919;
        double r98924 = r98922 * r98923;
        double r98925 = r98924 + r98914;
        double r98926 = r98914 / r98911;
        double r98927 = r98913 / r98911;
        double r98928 = r98926 - r98927;
        double r98929 = fma(r98910, r98928, r98913);
        double r98930 = r98909 ? r98925 : r98929;
        return r98930;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Derivation

  1. Split input into 2 regimes
  2. if a < -1.7965648978181715e-276 or 2.4670226099090405e+40 < a

    1. Initial program 12.3

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

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

      \[\leadsto \color{blue}{\left(y - z\right) \cdot \frac{t - x}{a - z} + x}\]
    5. Using strategy rm
    6. Applied add-cube-cbrt12.8

      \[\leadsto \left(y - z\right) \cdot \frac{t - x}{\color{blue}{\left(\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}\right) \cdot \sqrt[3]{a - z}}} + x\]
    7. Applied add-cube-cbrt12.9

      \[\leadsto \left(y - z\right) \cdot \frac{\color{blue}{\left(\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}\right) \cdot \sqrt[3]{t - x}}}{\left(\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}\right) \cdot \sqrt[3]{a - z}} + x\]
    8. Applied times-frac12.9

      \[\leadsto \left(y - z\right) \cdot \color{blue}{\left(\frac{\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{a - z}}\right)} + x\]
    9. Applied associate-*r*9.9

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

    if -1.7965648978181715e-276 < a < 2.4670226099090405e+40

    1. Initial program 22.3

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

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

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(y, \frac{x}{z} - \frac{t}{z}, t\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification12.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \le -1.796564897818171461838241121240225506082 \cdot 10^{-276} \lor \neg \left(a \le 24670226099090405448076544256884334395390\right):\\ \;\;\;\;\left(\left(y - z\right) \cdot \frac{\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}\right) \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{a - z}} + x\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(y, \frac{x}{z} - \frac{t}{z}, t\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020002 +o rules:numerics
(FPCore (x y z t a)
  :name "Numeric.Signal:interpolate   from hsignal-0.2.7.1"
  :precision binary64
  (+ x (* (- y z) (/ (- t x) (- a z)))))