Average Error: 2.1 → 1.1
Time: 15.5s
Precision: 64
\[\frac{x}{y} \cdot \left(z - t\right) + t\]
\[\begin{array}{l} \mathbf{if}\;\frac{x}{y} \le -1.141100597297648032802527423462757536886 \cdot 10^{145}:\\ \;\;\;\;t + x \cdot \frac{z - t}{y}\\ \mathbf{elif}\;\frac{x}{y} \le 1.351614225725563424608543172676723060249 \cdot 10^{171}:\\ \;\;\;\;\left(t + \left(\sqrt[3]{\frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y}}\right) \cdot \left(-\sqrt[3]{\frac{x}{y}} \cdot t\right)\right) + \frac{x}{y} \cdot z\\ \mathbf{else}:\\ \;\;\;\;t + x \cdot \frac{z - t}{y}\\ \end{array}\]
\frac{x}{y} \cdot \left(z - t\right) + t
\begin{array}{l}
\mathbf{if}\;\frac{x}{y} \le -1.141100597297648032802527423462757536886 \cdot 10^{145}:\\
\;\;\;\;t + x \cdot \frac{z - t}{y}\\

\mathbf{elif}\;\frac{x}{y} \le 1.351614225725563424608543172676723060249 \cdot 10^{171}:\\
\;\;\;\;\left(t + \left(\sqrt[3]{\frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y}}\right) \cdot \left(-\sqrt[3]{\frac{x}{y}} \cdot t\right)\right) + \frac{x}{y} \cdot z\\

\mathbf{else}:\\
\;\;\;\;t + x \cdot \frac{z - t}{y}\\

\end{array}
double f(double x, double y, double z, double t) {
        double r23964831 = x;
        double r23964832 = y;
        double r23964833 = r23964831 / r23964832;
        double r23964834 = z;
        double r23964835 = t;
        double r23964836 = r23964834 - r23964835;
        double r23964837 = r23964833 * r23964836;
        double r23964838 = r23964837 + r23964835;
        return r23964838;
}

double f(double x, double y, double z, double t) {
        double r23964839 = x;
        double r23964840 = y;
        double r23964841 = r23964839 / r23964840;
        double r23964842 = -1.141100597297648e+145;
        bool r23964843 = r23964841 <= r23964842;
        double r23964844 = t;
        double r23964845 = z;
        double r23964846 = r23964845 - r23964844;
        double r23964847 = r23964846 / r23964840;
        double r23964848 = r23964839 * r23964847;
        double r23964849 = r23964844 + r23964848;
        double r23964850 = 1.3516142257255634e+171;
        bool r23964851 = r23964841 <= r23964850;
        double r23964852 = cbrt(r23964841);
        double r23964853 = r23964852 * r23964852;
        double r23964854 = r23964852 * r23964844;
        double r23964855 = -r23964854;
        double r23964856 = r23964853 * r23964855;
        double r23964857 = r23964844 + r23964856;
        double r23964858 = r23964841 * r23964845;
        double r23964859 = r23964857 + r23964858;
        double r23964860 = r23964851 ? r23964859 : r23964849;
        double r23964861 = r23964843 ? r23964849 : r23964860;
        return r23964861;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original2.1
Target2.3
Herbie1.1
\[\begin{array}{l} \mathbf{if}\;z \lt 2.759456554562692182563154937894909044548 \cdot 10^{-282}:\\ \;\;\;\;\frac{x}{y} \cdot \left(z - t\right) + t\\ \mathbf{elif}\;z \lt 2.32699445087443595687739933019129648094 \cdot 10^{-110}:\\ \;\;\;\;x \cdot \frac{z - t}{y} + t\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{y} \cdot \left(z - t\right) + t\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if (/ x y) < -1.141100597297648e+145 or 1.3516142257255634e+171 < (/ x y)

    1. Initial program 13.1

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

      \[\leadsto \color{blue}{\left(x \cdot \frac{1}{y}\right)} \cdot \left(z - t\right) + t\]
    4. Applied associate-*l*2.1

      \[\leadsto \color{blue}{x \cdot \left(\frac{1}{y} \cdot \left(z - t\right)\right)} + t\]
    5. Simplified2.0

      \[\leadsto x \cdot \color{blue}{\frac{z - t}{y}} + t\]

    if -1.141100597297648e+145 < (/ x y) < 1.3516142257255634e+171

    1. Initial program 0.9

      \[\frac{x}{y} \cdot \left(z - t\right) + t\]
    2. Using strategy rm
    3. Applied sub-neg0.9

      \[\leadsto \frac{x}{y} \cdot \color{blue}{\left(z + \left(-t\right)\right)} + t\]
    4. Applied distribute-lft-in0.9

      \[\leadsto \color{blue}{\left(\frac{x}{y} \cdot z + \frac{x}{y} \cdot \left(-t\right)\right)} + t\]
    5. Applied associate-+l+0.9

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

      \[\leadsto \frac{x}{y} \cdot z + \left(\color{blue}{\left(\left(\sqrt[3]{\frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y}}\right) \cdot \sqrt[3]{\frac{x}{y}}\right)} \cdot \left(-t\right) + t\right)\]
    8. Applied associate-*l*1.0

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{x}{y} \le -1.141100597297648032802527423462757536886 \cdot 10^{145}:\\ \;\;\;\;t + x \cdot \frac{z - t}{y}\\ \mathbf{elif}\;\frac{x}{y} \le 1.351614225725563424608543172676723060249 \cdot 10^{171}:\\ \;\;\;\;\left(t + \left(\sqrt[3]{\frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y}}\right) \cdot \left(-\sqrt[3]{\frac{x}{y}} \cdot t\right)\right) + \frac{x}{y} \cdot z\\ \mathbf{else}:\\ \;\;\;\;t + x \cdot \frac{z - t}{y}\\ \end{array}\]

Reproduce

herbie shell --seed 2019179 
(FPCore (x y z t)
  :name "Numeric.Signal.Multichannel:$cget from hsignal-0.2.7.1"

  :herbie-target
  (if (< z 2.759456554562692e-282) (+ (* (/ x y) (- z t)) t) (if (< z 2.326994450874436e-110) (+ (* x (/ (- z t) y)) t) (+ (* (/ x y) (- z t)) t)))

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