Average Error: 14.4 → 9.9
Time: 34.6s
Precision: 64
\[x + \left(y - z\right) \cdot \frac{t - x}{a - z}\]
\[\begin{array}{l} \mathbf{if}\;a \le -2.479409256430602805583242268706868636975 \cdot 10^{-100} \lor \neg \left(a \le 3.423434916771324575324687721886148731253 \cdot 10^{-135}\right):\\ \;\;\;\;\mathsf{fma}\left(\frac{y - z}{a - z}, t + \left(-x\right), x\right) + \mathsf{fma}\left(-\sqrt[3]{x}, \sqrt[3]{x} \cdot \sqrt[3]{x}, \sqrt[3]{x} \cdot \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)\right) \cdot \left(\left(y - z\right) \cdot \frac{1}{a - z}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{x}{z}, y, t\right) - \frac{t \cdot y}{z}\\ \end{array}\]
x + \left(y - z\right) \cdot \frac{t - x}{a - z}
\begin{array}{l}
\mathbf{if}\;a \le -2.479409256430602805583242268706868636975 \cdot 10^{-100} \lor \neg \left(a \le 3.423434916771324575324687721886148731253 \cdot 10^{-135}\right):\\
\;\;\;\;\mathsf{fma}\left(\frac{y - z}{a - z}, t + \left(-x\right), x\right) + \mathsf{fma}\left(-\sqrt[3]{x}, \sqrt[3]{x} \cdot \sqrt[3]{x}, \sqrt[3]{x} \cdot \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)\right) \cdot \left(\left(y - z\right) \cdot \frac{1}{a - z}\right)\\

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r147705 = x;
        double r147706 = y;
        double r147707 = z;
        double r147708 = r147706 - r147707;
        double r147709 = t;
        double r147710 = r147709 - r147705;
        double r147711 = a;
        double r147712 = r147711 - r147707;
        double r147713 = r147710 / r147712;
        double r147714 = r147708 * r147713;
        double r147715 = r147705 + r147714;
        return r147715;
}

double f(double x, double y, double z, double t, double a) {
        double r147716 = a;
        double r147717 = -2.479409256430603e-100;
        bool r147718 = r147716 <= r147717;
        double r147719 = 3.4234349167713246e-135;
        bool r147720 = r147716 <= r147719;
        double r147721 = !r147720;
        bool r147722 = r147718 || r147721;
        double r147723 = y;
        double r147724 = z;
        double r147725 = r147723 - r147724;
        double r147726 = r147716 - r147724;
        double r147727 = r147725 / r147726;
        double r147728 = t;
        double r147729 = x;
        double r147730 = -r147729;
        double r147731 = r147728 + r147730;
        double r147732 = fma(r147727, r147731, r147729);
        double r147733 = cbrt(r147729);
        double r147734 = -r147733;
        double r147735 = r147733 * r147733;
        double r147736 = r147733 * r147735;
        double r147737 = fma(r147734, r147735, r147736);
        double r147738 = 1.0;
        double r147739 = r147738 / r147726;
        double r147740 = r147725 * r147739;
        double r147741 = r147737 * r147740;
        double r147742 = r147732 + r147741;
        double r147743 = r147729 / r147724;
        double r147744 = fma(r147743, r147723, r147728);
        double r147745 = r147728 * r147723;
        double r147746 = r147745 / r147724;
        double r147747 = r147744 - r147746;
        double r147748 = r147722 ? r147742 : r147747;
        return r147748;
}

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 < -2.479409256430603e-100 or 3.4234349167713246e-135 < a

    1. Initial program 10.4

      \[x + \left(y - z\right) \cdot \frac{t - x}{a - z}\]
    2. Using strategy rm
    3. Applied div-sub10.4

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

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

      \[\leadsto x + \left(y - z\right) \cdot \left(\color{blue}{t \cdot \frac{1}{a - z}} - x \cdot \frac{1}{a - z}\right)\]
    7. Applied distribute-rgt-out--10.5

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

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

      \[\leadsto x + \left(\left(y - z\right) \cdot \frac{1}{a - z}\right) \cdot \left(t - \color{blue}{\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \sqrt[3]{x}}\right)\]
    11. Applied add-sqr-sqrt36.0

      \[\leadsto x + \left(\left(y - z\right) \cdot \frac{1}{a - z}\right) \cdot \left(\color{blue}{\sqrt{t} \cdot \sqrt{t}} - \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \sqrt[3]{x}\right)\]
    12. Applied prod-diff36.0

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

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

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

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

    if -2.479409256430603e-100 < a < 3.4234349167713246e-135

    1. Initial program 24.8

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

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

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

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

Reproduce

herbie shell --seed 2019209 +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)))))